美好的一天。
首先在php中创建json:
$a=0;
foreach(...){
$a++;
$ArrImage["$a"] = $PathToThumbnailImage;
}
return json_encode($ArrImage);
second - jquery:
$("#form").ajaxForm({
url: './index.php?page=test',
success: function(data){
var files = JSON.parse(data);
console.log(files);
//files in console.log:
// Object {1: "./DIR/90_1409499383.jpg",
// 2: "./DIR/90_1409499383.jpg"}
$.each(data.d, function(key, value) {
console.log('test' + key + ":" + value)
});
//now we get error `Uncaught TypeError: Cannot read property 'length'
// of undefined `
}
}).submit();
请告诉我为什么我们会收到错误以及如何正确使用$.each
?
答案 0 :(得分:0)
当您通过Ajax创建请求时,它将使用输出的数据。
当你使用'return'时,你没有输出任何东西。
您必须将'return'更改为'echo'或'print'或其他。
答案 1 :(得分:0)
您应该将data.d
替换为files
它需要一个对象或数组来迭代
from the Jquery: -
$。每个
: - A generic iterator function, which can be used to seamlessly iterate over both objects and arrays
因此文件是你的对象而不是数据。
$("#form").ajaxForm({
url: './index.php?page=test',
success: function(data){
var files = JSON.parse(data);
console.log(files);
//files in console.log:
// Object {1: "./DIR/90_1409499383.jpg",
// 2: "./DIR/90_1409499383.jpg"}
$.each(files, function(key, value) {
console.log('test' + key + ":" + value)
});
}
}).submit();
答案 2 :(得分:0)
我试着纠正
$("#form").ajaxForm({
url : './index.php?page=test',
//you miss this
dataType : 'json',
success : function(data){
// your server return data not data.d
$.each(data, function(key, value) {
console.log('test' + key + ":" + value);
});
}
}).submit();
答案 3 :(得分:0)
您可以在PHP脚本中使用header('Content-Type: application/json');
,这样就不必在客户端使用JSON.parse
。
$ArrImage = array();
foreach(...){
$ArrImage[] = $PathToThumbnailImage;
}
header('Content-Type: application/json');
echo json_encode($ArrImage);
当您不确定返回的内容是否为JSON时,您可以写:
success: function( data ) {
data = $.type( data ) === 'string' ? JSON.parse( data ) : data;
$.each(data, function( key, value ) {
.......
});
}
....