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));
} 
?>

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

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...