我有一个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中没有。
的属性“eng”
答案 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.