PHP和Ajax在回调和返回数组中使用foreach循环

Amr*_*ero 1 javascript php arrays ajax jquery

我通过努力环回调PHP的结果。

但是我不知道如何返回数组作为回调

这是我的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
}
Run Code Online (Sandbox Code Playgroud)

这是我的Jquery代码:

$.ajax({
    url:"file.php",
    dataType: 'jsonp',
    data: {id: id},
    success:function(response){
        $('body').append(response);
    }
});
Run Code Online (Sandbox Code Playgroud)

它只给我一个结果,但它应该返回一个数组,它的工作方式就像我没有foreach在php代码中使用循环一样。

我在没有Ajax请求的情况下测试了PHP代码,并且它返回了一组URL,但是如果我使用了Ajax回调,则它仅返回一个URL。

Daa*_*aan 5

它仅返回1个URL,因为它仅返回第一个URL。您应该encode整个数组并在success函数中循环,如下所示:

PHP:

$id = $_GET['id'];
$data = file_get_contents('__url');
parse_str($data);
$array = explode(',', $url_encoded_fmt_stream_map);
echo json_encode($array);
Run Code Online (Sandbox Code Playgroud)

JS:

$.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);
        });
    }
});
Run Code Online (Sandbox Code Playgroud)