我正在循环遍历来自PHP结果的回调。
但是我不能或者我不知道如何将数组作为回调返回
这是我的代码:
$id = $_GET['id'];
$data = file_get_contents('__url');
parse_str($data);
$array = explode(',', $url_encoded_fmt_stream_map);
foreach($array as $item) {
parse_str($item);
echo $_GET['callback']."(".json_encode($url).");"; // it should return an array at least 3 urls
}这是我的Jquery代码:
$.ajax({
url:"file.php",
dataType: 'jsonp',
data: {id: id},
success:function(response){
$('body').append(response);
}
});它只给了我一个结果,但它应该返回一个数组,它的工作方式就像我在php代码中没有使用foreach循环一样。
我测试了没有 ajax请求的ajax代码,它返回了一个url数组,但是如果我使用ajax回调,它只返回一个url。
发布于 2015-02-20 16:10:22
如果你尝试像这样的东西:
$id = $_GET['id'];
$data = file_get_contents('__url');
parse_str($data);
$array = explode(',', $url_encoded_fmt_stream_map);
$final_arr = array();
foreach($array as $item) {
parse_str($item);
array_push($final_arr , $url);
}
$jsonp = json_encode($final_arr);
if(isset($_GET['callback'])){
header("Content-Type: application/json");
echo $_GET['callback'] . '(' . $jsonp . ')';
}else{
echo $jsonp;
}你的ajax:
$.ajax({
url:"file.php",
dataType: 'jsonp',
data: {id: id},
success:function(response){
var obj = JSON.parse(response);
$.each(obj, function(key,val){
console.log(key);
console.log(val); //depending on your data, you might call val.url or whatever you may have
});
$('body').append(response);
}
});发布于 2015-02-20 15:40:50
它只返回一个URL,因为它只返回第一个URL。您应该在encode函数中对整个数组和循环进行如下操作:
PHP:
$id = $_GET['id'];
$data = file_get_contents('__url');
parse_str($data);
$array = explode(',', $url_encoded_fmt_stream_map);
echo json_encode($array);联署材料:
$.ajax({
url:"file.php",
dataType: 'jsonp',
data: {id: id},
success:function(response){
var res = JSON.parse(res);
$.each(res, function(key, index){
$('body').append(index);
});
}
});https://stackoverflow.com/questions/28632637
复制相似问题