我有一個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]
*不*手動創建您自己的JSON字符串!創建一個數組,然後使用['json_encode'](http://php.net/json_encode)。 –
我會在php中創建JSON數組,然後回顯,然後解析?抱歉,對Ajax仍然陌生。 – James
是的,這就是它的工作原理。附:你可以做'$ .post(url,{your:data},function(d){},'json');'','json''告訴jQuery爲你解析JSON。 –