Php 使用jsonp数据类型时无法获取Ajax回调json数据
下面是我的JS代码: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
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);
}
});