2013-11-14 61 views
1

我有一個PHP腳本,查詢我的數據庫的一些值,並將它們放入一個JSON字符串。JSON對象顯示控制檯中的對象,但也包含由PHP腳本返回的字符串'undefined'

<?php 

if (isset($_POST['name']) === true && empty($_POST['name']) === false) { 
    include_once("../php_scripts/connect.php"); 

    $arr = array(); 
    if ($result = $mysqli->query("SELECT due_date FROM payment_due_dates WHERE client_id = '" . $_POST['name']. "'")) { 
     $rowCount = $result->num_rows; 

     echo '['; 
     $i = 0; 
     while ($row = $result->fetch_assoc()) { 
      if ($i <= $rowCount - 2){ 
       echo json_encode($row); 
       echo ','; 
      }else{ 
       echo json_encode($row); 
      } 
      $i++; 
     } 
     $result->free(); 
    } 
    echo ']'; 
} 

?> 

然後jquery轉換成一個json對象,並將這些值添加到一個選擇框中。

$(document).ready(function(){ 
      $('#subName').click(function(){ 

       var name = $('input#txtName').val(); 

       if($.trim(name) != ''){ 
        $.post('ajax/load_patient_episodes.php', {name: name}, function(data){ 
        console.log(data); 
        var obj = $.parseJSON(data); 
        console.log(obj); 
         var output; 
         $.each(obj, function(key, val){ 
          output += '<option>' + val.due_date + '</option>'; 
         }); 
         $('#selEpisode2').html("<option>" + output + "</option>"); 
        }); 
       } 
      }); 
     }); 

它加載的值,而且還給出了這樣的錯誤在我的控制檯日誌:

event.returnValue is deprecated. Please use the standard event.preventDefault() 
instead. jquery.js:5 

,當它增加了值,它也增加了文本「未定義」的選擇框。所以在我的選擇框中的選項顯示爲:

不確定

2013年11月13日

2013年11月13日

2013年11月13日

我假設它可能與原型陣列有關,但我不確定它是如何到達那裏的。這件事還是有點新手。這是我的控制檯日誌。任何想法,我可以失去'我選擇的選項中的未定義'?另外,有沒有更好的方法,我應該加載從PHP查詢選擇選項?

event.returnValue is deprecated. Please use the standard event.preventDefault() 
instead. jquery.js:5 
[Object, Object, Object] 
0: Object 
1: Object 
2: Object 
length: 3 
__proto__: Array[0] 
+2

*不*手動創建您自己的JSON字符串!創建一個數組,然後使用['json_encode'](http://php.net/json_encode)。 –

+0

我會在php中創建JSON數組,然後回顯,然後解析?抱歉,對Ajax仍然陌生。 – James

+0

是的,這就是它的工作原理。附:你可以做'$ .post(url,{your:data},function(d){},'json');'','json''告訴jQuery爲你解析JSON。 –

回答

0

試試這個

var output = ''; 
$.each(obj, function(key, val){ 
    if (typeof (val.due_date) != undefined) { 
    output += '<option>' + val.due_date + '</option>'; 
    } 
}); 

您可能還想要SELECT UNIQUE due_date。

+0

只需初始化var輸出就可以修復它。謝謝!有時候,這只是一些小事情。 – James

0

希望,你jquery版本是舊的,所以你可以下載最新的jQuery版本,包括爲你的文件,

下載:http://jquery.com/download/

或者,也可以包括以下之一,

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
0

空白值初始化變量輸出

var output= "";