微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP,Javascript,mysql和选择列表

我正在开发一些软件,它将从mysql数据库获取信息并将其动态地抛到我们的表单上.不过,我遇到了几个问题.我将简要介绍一些功能.

当表单加载时,我们有大量的选择列表.这些都是通过PHP中的各种键/值的数组填充的.当我从一个列表中选择一个选项时,我们将其称为“客户”列表,点击我需要检查该客户是否有特殊标志(存储在数据库中),并根据该数据更新另一个选择列表.

我如何理解我的解决方案的核心是我需要点击一下javascript触发器,我有.调用函数引用一个PHP页面,该页面通过类及其函数处理数据库查询.

<script>
function setService() 
{   // The customer's "id" grabbed from the aforementioned customer selection list
    customer = $('#customer').val();
    $.get('thePage.PHP?key=setService?customer='+customer);
}
</script>

然后这个函数与我的PHP对话. CustomerProvider类100%工作.我在其他页面上对此进行了彻底测试.当我试图让我的选择列表改变时,问题就出现了.

<?
if(isset($_GET['key']) && $_GET['key'] == 'setService')
{
    $customer = $_GET['customer'];
    $customer = intval($customer);
    $s = CustomerProvider::getHasContract($customer);
    if ($s != '')
       { ?> <script>var element = document.getElementById('ticket_service');
          element.value = 'Contracted Hours';</script> <? }
    else return;
} 
?>

我有史以来第一次用javascript进行编码,他们只是把我扔进了这个项目.我知道我的部分不像我想要的那样被读作html或输出.我知道PHP的每个其他部分和第一部分javascript似乎都正常执行.任何帮助都会非常感激.

解决方法:

你似乎走在正确的轨道上,但仅仅为了你自己的理智,这里有几个指针.对于像这样的情况,你不应该从PHP返回Javascript.相反,您应该依赖Javascript承诺等待仅包含数据的响应,并在返回值后继续执行客户端代码.看看这个:

<script>
  function setService() { // The customer's "id" grabbed from the aforementioned customer selection list
    customer = $('#customer').val();
    $.get('thePage.PHP?key=setService?customer=' + customer, function(data) {
      console.log(data + ' was returned from your PHP script!');
      if(data.hasContract=='1')
          $('#ticket_service').val('Contracted Hours');
      else
          $('#ticket_service').val('No Contracted Hours');
    });
  }
</script>

然后你的PHP脚本将如下所示:

<?
if(isset($_GET['key']) && $_GET['key'] == 'setService')
{
    $customer = $_GET['customer'];
    $customer = intval($customer);
    $s = CustomerProvider::getHasContract($customer);
    if ($s != ''){
        $hasContract = 1;
    }
    else 
        $hasContract = 0;

    echo json_encode(array('hasContract' => $hasContract));
} 
?>

因此,仅返回客户端应用程序继续所需的数据…而不是应用程序逻辑

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐