2014-02-27 35 views
0

我想通过PHP填充从PDO MySql的结果初始客户选择框。然后,我希望第二个联系人选择框更新,其中包含与第一个框中所选内容相关的附加信息。我无法获得第二个脚本的工作。我认为问题出在我的ajax脚本中,因为PHP脚本在自己运行时运行良好。动态更新选择框与PHP的MySQL jquery ajax

初级脚本

<html> 
<head> 
    <script type="text/javascript" src="js/jquery-1.11.0.js"></script> 
    <script type="text/javascript" src="js/jquery-ui-1.10.4.custom.js"></script> 

    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $("#contact").change(function(){ 
       var cid = $("#cid").val(); 
       $.ajax({ 
        type:"post", 
        url:"contact.php", 
        data:"cid="+cid, 
        success: function(data) { 
         $("#contact").html(data); 
        } 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body> 

    Campaign : 
    <select name="customer" id="customer"> 
     <option>-Select a Customer-</option> 
    <?php 
    include ("function.php"); 
    include("connect.php"); 
    $id = $_SESSION['profile']['id']; 
    foreach($db->query("SELECT * FROM customers WHERE pid = '$id'") as $row) { 
     echo "<option value=" . $row['id'] . ">" . $row['name'] . "</option>"; 
} 
     ?> 
    </select> 



    <select name="contact" id="contact"> 
     <option>-Select a Contact-</option> 
    </select> 
    </body> 
</html> 

联络脚本

include("connect.php"); 
$cid = $_POST["cid"]; 
foreach($db->query("SELECT * FROM contact WHERE cid = '$cid'") as $row) { 
    echo '<option value="'.$row['id'].'">'.$row['name'].'</option>'; 

回答

1

也许你的第二个功能应该开始#customer变化

0

我看你使用的联系人,然后选择在阿贾克斯没有顾客,你描述。但是,您编写的代码中,您使用带有更改事件的联系人选择器,但联系人选择框只包含一个值,它如何更改?

<select name="contact" id="contact"> 
    <option>-Select a Contact-</option> 
</select> 

以前的选择应该有更多的选项可以改变。或者,我想你指的是不是#customer如下联系: -

$("#customer").change(function(){ 
       // your code; 
      }); 
0

为什么不直接用encode的ID和名称的JSON响应?

foreach($db->query("SELECT * FROM contact WHERE cid = '$cid'") as $row) { 
    $arr[] = array("id" => $row['id'], "name" => $row['name']); 
} 
echo json_encode($arr); 

然后在你的Ajax响应,你可以做

$(document).ready(function() { 
    $("#customer").change(function() { 
     var cid = $("#customer").val(); 
     $.ajax({ 
      type: "post", 
      url: "contact.php", 
      data: {cid: cid}, 
      success: function (data) { 
       var options = []; 
       $.each(data, function() { 
        options.push('<option value="' + this.id + '">' + this.name + '</option>'); 
       }); 
       $("#contact").html(options.join("")); 
      } 
     }); 
    }); 
}); 
+0

我换给你建议的纸条,现在我甚至不得到所有我看到的是一个向下箭头 –

+0

无视我刚刚说的,我在联系人下拉列表中没有任何内容,只是硬编码的东西。 –

+0

我只注意到你的代码有其他错误。我会更新答案 – Tomanow