JSON对象在控制台中显示对象,但也包含php脚本返回的字符串中的'undefined'

时间:2013-11-14 15:35:56

标签: javascript php jquery json

我有一个php脚本,可以查询我的数据库中的某些值,并将它们放入json字符串中。

<?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

并且,当它将值添加到选择框时,它还会添加文本'undefined'。因此,我的选择框中的选项显示为:

未定义

2013年11月13日

2013年11月13日

2013年11月13日

我认为它可能与那里的 proto 数组有关,但我不确定它是如何到达那里的。这个东西还是有点新手。这是我的控制台日志。任何想法我怎么会失去'我的选择中的未定义?'另外,有没有更好的方法来加载从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]

3 个答案:

答案 0 :(得分:0)

希望您的jquery版本已经过时,您可以下载最新的jquery版本并将其包含在您的文件中,

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

或者,您可以包含以下内容,

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

答案 1 :(得分:0)

试试这个

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

您可能还想要SELECT UNIQUE due_date。

答案 2 :(得分:0)

使用空白值初始化变量输出

var output= "";
相关问题