无法使用2个下拉列表中的选定值获取值

时间:2016-01-23 12:29:16

标签: javascript php jquery mysql ajax

我有2个删除列表,其中第一个删除列表是使用AJAX从MySQL获取数据,这是脚本:

$(document).ready(function() {
     $('#sale_type').change(function() {
    var formData = { 'selectedValue' : $( "#sale_type option:selected" ).val() };
    console.log(formData);
    $.ajax({
       type: 'POST',  
       url: 'getTypeDetails.php',
       data: formData,
       success: function(data){              
      var obj = jQuery.parseJSON(data);      
      var secondDropdown = $("#sale_details");
      secondDropdown.html('');
      var init = 'إختر';
      secondDropdown.append("<option>" + init + "</option>");
      for (var prop in obj) {

         secondDropdown.append("<option>" + obj[prop] + "</option>");
        } 

       },
       error: function(errorThrown){
      alert(errorThrown);
       }

       });

     return false;
     });
   });

这是PHP代码(getType ...):

<?php
    require_once('../include/global.php');

    $init_data = $_POST['selectedValue'];
    // Connect to database
    // Use the data to get the new information
    $query = "SELECT * FROM purchases WHERE sale_type = :data";
    // MySQL
    $results = $conn->prepare($query);
    $results->bindValue(":data", $init_data);
    $exec = $results->execute();
    $res = $results->fetchAll();

    $data = array();
    $i = 0;
    foreach($res as $row){
         $data[$i] = $row['sale_details'];
         $i++;

    }
    echo json_encode($data);
?>

现在,数据通常使用第一个中的选定值显示在第二个下拉列表中,这里是脚本:

$(document).ready(function() {
     $('#sale_type_2').change(function() {
    var formData = { 'selectedValue2' : $( "#sale_type_2 option:selected" ).val() };
    console.log(formData);
    $.ajax({
       type: 'POST',  
       url: 'getTypeDetails_2.php',
       data: formData,
       success: function(data){              
      var obj = jQuery.parseJSON(data);      
      var secondDropdown = $("#sale_details_2");
      secondDropdown.html('');
      var init = 'إختر';
      secondDropdown.append("<option>" + init + "</option>");
      for (var prop in obj) {

         secondDropdown.append("<option>" + obj[prop] + "</option>");
        } 

       },
       error: function(errorThrown){
      alert(errorThrown);
       }

       });

     return false;
     });
   });

现在,我想从这两个下拉列表中取出2个选定的值并在文本框中显示一个值,所以我尝试了以下内容:

$(document).ready(function() {
     $('#sale_details_2').change(function() {
    var formData = { 'selectedValue' : $( "#sale_type_2 option:selected" ).val(),
    'selectedValue2' : $( "#sale_details_2 option:selected" ).val() };
    console.log(formData);
    $.ajax({
       type: 'POST',  
       url: 'getTypeDetails_3.php',
       data: formData,
       success: function(data){              
      var obj = jQuery.parseJSON(data);      
      var secondDropdown = $("#price_2");
      secondDropdown.html('');
      for (var prop in obj) {

         secondDropdown.text(obj[prop]);
        } 

       },
       error: function(errorThrown){
      alert(errorThrown);
       }

       });

     return false;
     });
   });

这是php代码:

<?php
    require_once('../include/global.php');

    $init_data = $_POST['selectedValue2'];
    $init_data2 = $_POST['selectedValue3'];
    // Connect to database
    // Use the data to get the new information
    $query = "SELECT * FROM purchases WHERE sale_type = :data AND sale_details = :data2";
    // MySQL
    $results = $conn->prepare($query);
    $results->bindValue(":data", $init_data);
    $results->bindValue(":data2", $init_data2);
    $exec = $results->execute();
    $res = $results->fetchAll();

    $data = array();
    $i = 0;
    foreach($res as $row){
         $data[$i] = $row['price'];
         $i++;

    }
    echo json_encode($data);
?>

但它没有得到任何结果,我有以下控制台错误:

  

对象{selectedValue:“BMW”,selectedValue2:“despirator”}

     

VM227:1未捕获的SyntaxError:意外的标记&lt;

感谢任何帮助

修改 纠正一些行后:

var formData = { 'selectedValue' : $( "#sale_type_2 option:selected" ).val(),
    'selectedValue2' : $( "#sale_details_2 option:selected" ).val() };

   $init_data = $_POST['selectedValue'];
    $init_data2 = $_POST['selectedValue2'];

我有同样的错误,这是一张图片:

enter image description here

1 个答案:

答案 0 :(得分:2)

在formData中,您要发送值selectedValue&amp; selectedValue2,但在php中,您尝试获取selectedValue2&amp; selectedValue3

document.ready 3

var formData = { 'selectedValue' : $( "#sale_type_2 option:selected" ).val(),
'selectedValue2' : $( "#sale_details_2 option:selected" ).val() };

<强> PHP2

$init_data = $_POST['selectedValue2'];
$init_data2 = $_POST['selectedValue3'];

修改

OP找到它,而不是secondDropdown.text(obj[prop]);使用secondDropdown.val(obj[prop]);,因为他正在访问文本框。