Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用jsonp数据类型时无法获取Ajax回调json数据_Php_Jquery_Ajax_Json_Jsonp - Fatal编程技术网

Php 使用jsonp数据类型时无法获取Ajax回调json数据

Php 使用jsonp数据类型时无法获取Ajax回调json数据,php,jquery,ajax,json,jsonp,Php,Jquery,Ajax,Json,Jsonp,下面是我的JS代码: function getTopProductsApi(){ var result; $.ajax({ url: API_url, type: "get", data: ({}), async:false, dataType: "jsonp", jsonpCallback:"success_jsonpCallback", success: functi

下面是我的JS代码:

function getTopProductsApi(){

 var result;

    $.ajax({
        url: API_url,
        type: "get",
        data: ({}),
        async:false,
        dataType: "jsonp",
        jsonpCallback:"success_jsonpCallback",
        success: function(rs){
            result = rs;
        }
    });
    return result ;

}


var result = getTopProductsApi();
alert(result);
PHP

我确信我得到了返回的json数据: 下面是我得到的json数据:

success_jsonpCallback("213213")
但我发出警报时没有数据

有人能说出原因吗?谢谢

请尝试以下代码:

function getTopProductsApi(){

var result;

$.ajax({
    url: API_url,
    type: "get",
    data: ({}),
    async:false,
    dataType: "jsonp",
    jsonpCallback:"success_jsonpCallback",
    success: function(rs){
        result = rs;
    }
});


}
function success_jsonpCallback(result){
    alert(result)
}
我的代码: 测试页面:

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
function getTopProductsApi(){

 var result;

    $.ajax({
        url: '/test/test1.php',
        type: "get",
        data: ({}),
        async:false,
        dataType: "jsonp",
        jsonpCallback:"success_jsonpCallback",
        success: function(rs){
            result = rs;
        }
    });
    //alert(result);
    return result;
}

var result = getTopProductsApi();
alert(result);
</script>
</head>
<body>
</body>
</html>
php页面:

<?php
echo $_GET['callback']. '(' . json_encode('213213') . ')';

它工作得很好。您可以试一试。

谢谢大家的回答。 最后,我发现了问题所在。 也许这不是当前的答案,但这些信息对我很有用。 jsonp数据类型始终是异步的。 代码返回结果总是比ajax块运行得更快。 所以结果变量总是空的。 因此,我更改代码如下:

函数getTopProductsApifunction\u名称{

$.ajax({
    url: API_url,
    global: false,
    cache: false,
    type: "get",
    data: ({'current_date':current_date}),
    dataType: "jsonp",
    jsonpCallback:"success_jsonpCallback",
    success: function(rs){
        result = rs;
        window[function_name](result);
    }
});
}

getTopProductsApi“另一个函数名”

这个方法可以确保我可以首先获取ajax json数据,然后运行我需要的另一个函数

也许这不是最好的答案,请告诉我,如果你有其他很酷的想法


感谢

事实上,这个json数据的另一个副本将在其他地方使用。
$.ajax({
    url: API_url,
    global: false,
    cache: false,
    type: "get",
    data: ({'current_date':current_date}),
    dataType: "jsonp",
    jsonpCallback:"success_jsonpCallback",
    success: function(rs){
        result = rs;
        window[function_name](result);
    }
});