2013-08-19 93 views
0

選擇選項我有以下代碼....填充AJAX和PHP

<form action=""> 
    <select class="input-xlarge required" id="inputGender" name="inputGender"> 
     <option value="">select</option> 
     <option value="m">male</option> 
     <option value="w">female</option> 
    </select> 
<input type="text" class="input" id="DOB" name="DOB"> 
    <select class="input-xlarge" id="inputWeight" name="inputWeight"> 
     <option value="">select</option> 
    </select> 

    <input type="submit" name="action" value="Book" /> 
</form> 

我已經生成此JSON文件data.php文件,計算兩個參數後只有一個文件通過...... DOB和inputGender ...

[{"ID":"1", "desc":"(12)"},{"ID":"2", "desc":"(5)"},{"ID":"6", "desc":"(15)"}] 

jQuery代碼我是...

$('#inputGender', '#DOB').change(function(){ 
     $.ajax({ 
      type: "POST", 
      url: "data.php", 
      data: { 
       gender: $('#inputGender').val() 
       dob: $('#DOB').val() 
      }, 
     }).done(function(msg) { 
      var wcs = $.parseJSON(msg); 
      console.log(wcs); 
      $('#inputWeight').html(''); 
      $('#inputWeight').append('<option value="">Select</option>'); 
       $.each(wcs[$(this).val()], function() { 
     $persons.append("<option value=" + this.ID_wcl + ">" + this.wcl_desc + "</option>"); 
      }); 
     });   
    }); 
); 

我有新的鱈魚e ...看下面...一些想法,爲什麼這不工作呢?

$('#inputGender', '#DOB').change(function(){ 
        $.ajax({ 
        type: "POST", 
        url: "data.php", 
        data: { 
       gender: $('#inputGender').val() 
       dob: $('#DOB').val() 
      }, 
        dataType: 'json', 
        }).done(function(msg) { 
         var wcs = $.parseJSON(msg); 
          console.log(wcs); 
         $('#inputWeight').html(''); 
         $('#inputWeight').append('<option value="">'+'<?=_('[Select]')?>'+'</option>'); 
         $.each(wcs, function(){ 
          $wc=$(this); 
          $('#inputWeight').append('<option '+selected+' value="'+$wc[0].ID_wcl+'">'+$wc[0].wcl_desc+'</option>'); 
         }) 
        })   
       }) 
+0

你試過添加'dataType:'json''嗎? – DevlshOne

+0

不,它不適用於dataType:json ... –

+0

在您的$ .each'語句中'$(this).val()'的可能值是多少?如果它只是{0,1,2},那就失敗了。 – DevlshOne

回答

1

如果返回的JSON(WCS)看起來是這樣的:

[ 
{"ID":"1", "desc":"(12)"}, 
{"ID":"2", "desc":"(5)"}, 
{"ID":"6", "desc":"(15)"} 
] 

那對相當於:

[ 
[0] = {"ID":"1", "desc":"(12)"}, 
[1] = {"ID":"2", "desc":"(5)"}, 
[2] = {"ID":"6", "desc":"(15)"} 
] 

但在你$.each迭代器,您使用的是索引是$('#inputWeight')的值。因此,除非#inputWeight的值爲{0,1,2},否則腳本正試圖訪問未定義的數組元素。

您的代碼與TYPOS固定,雖然我仍然不知道你想要完成這個代碼(你永遠不會說明目的或期望的最終結果),這些修復應該可以幫助你得到更近一點。

$('#inputGender', '#DOB') 
    .change(function(){ 
     $.ajax({ 
      type: "POST", 
      url: "data.php", 
      data: { 
       gender: $('#inputGender').val(), // TYPO 
       dob: $('#DOB').val() 
      }, 
      dataType: 'json' // TYPO 
     }).done(function(msg) { 
      var wcs = $.parseJSON(msg); 
      console.log(wcs); 
      $('#inputWeight').html(''); 
      $('#inputWeight').append('<option value="">'+'<?=_('[Select]')?>'+'</option>'); 
      $.each(wcs, function(){ 
       $wc=$(this); 
       $('#inputWeight').append('<option '+selected+' value="'+$wc[0].ID_wcl+'">'+$wc[0].wcl_desc+'</option>'); 
      }); // MISSING SEMICOLON 
     }); // MISSING SEMICOLON 
    }) 
+0

這是好點.... –