JavaScript(jquery)函数无法完成其执行

时间:2014-05-09 09:18:23

标签: javascript php jquery ajax json

我有一个php文件,它返回一个大的json字符串(~2000个元素,每个都有14个子元素) 我使用jquery ajax来获取json并将它们放入id-identify表中。 但它在中途停止填充(~1100)。这是代码:

var max = <?php echo $max; ?>; //max is the total number of elements in the database called by php.
$.ajax({
    url: "all_arr.php",
    type: 'POST',
    dataType: "json",
    success: function(data) {
        for (var i = 0; i < max; i++) { 
            $("#name_" + i).html(data[i].eng);
            $("#slot_" + i).html(data[i].slot);
        }
    }
});

<小时/> 更新:代码在Safari中正常工作,但在chrome中没有。
未捕获的TypeError:无法读取未定义

的属性“eng”

2 个答案:

答案 0 :(得分:0)

如何计算数据表中的值?:

var max = <?php echo $max; ?>; //max is the total number of elements in the database called by php.

这是错的。您在成功函数中传递data参数。循环遍历它并以这种方式接收所有数据。

您的最终代码将是(如果数据是数组):

$.ajax({
    url: "all_arr.php",
    type: 'POST',
    dataType: "json",
    success: function(data) {
        for (var i = 0; i < data.length; i++) { 
            $("#name_" + i).html(data[i].eng);
            $("#slot_" + i).html(data[i].slot);
        }
    }
});

此外,您可以使用此:

$.ajax({
    url: "all_arr.php",
    type: 'POST',
    dataType: "json",
    success: function(data) {
        var i;
        for (i in data) { 
            $("#name_" + i).html(data[i].eng);
            $("#slot_" + i).html(data[i].slot);
        }
    }
});

两种方法都基于成功函数中接收对象的长度,但不是您指定的长度。您可能需要在此代码中设置错误的数据数组长度:var max = <?php echo $max; ?>;

告诉我结果。

答案 1 :(得分:-1)

请发布all_arr.php的代码,因为问题可能存在。

  • 如果有任何错误,请尝试error参数:

  • 尝试max=2200看看是否有效。最大可能在php中设置为错误的数字。

var max = <?php echo $max; ?>;

$.ajax({
    url: "all_arr.php",
    type: 'POST',
    dataType: "json",
    timeout: 10000, //add this if there a timeout
    success: function(data) {
        for (var i = 0; i < max; i++) {
            if(data[i] != undefined){
                $("#name_" + i).html(data[i].eng);
                $("#slot_" + i).html(data[i].slot);
            }
        }
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
    }
});

超时错误:

当超时发生时,您的错误事件处理程序会获取三个参数(xmlhttprequest, textstatus, message)status arg将为timeout。然后添加:

timeout: 10000, //10seconds

关于您的错误:Uncaught TypeError: Cannot read property 'eng' of undefined 这是.php文件中的错误和它返回的内容。

if(data[i] != undefined){ // if nothing is returned, print nothing.