JSON API(在 PHP 中创建)在请求时没有 return 结果
JSON API (created in PHP) does not return results when requested
我在 PHP 中创建了一个 JSON API returns
?({"a":"b"})
当我输入
"http://mylink.php?callback=?"
在浏览器中。但是,当我从桌面应用程序(使用 $.ajax)给出相同的 link 时,不会返回结果。创建 JSON API 的 PHP 代码是
<?php
header('Content-Type: application/javascript'); // Also tried application/json
$results = array();
$results['a'] = 'b';
$encoded = json_encode($results);
$encoded_callback = '?' . '(' . $encoded . ')';
echo $encoded_callback;
return $encoded_callback;
?>
javascript代码只包含
$.ajax({
url:url,
dataType:"jsonp",
success:function(data){
... some printing ...
}
});
据了解 当我用另一个 JSON API(不是我创建的)尝试时,它工作正常。所以我认为问题出在我的 API.
怎么了?我觉得缺少了一些东西,以便可以进行通信,但我不知道是什么以及在哪一侧(服务器或客户端)。
$encoded_callback = '?' . '(' . $encoded . ')';
?
不是 JavaScript 中的有效函数名称 (它是 an operator)。您应该将回调参数中指定的函数名称放在那里(这不是 ?
,?
告诉 jQuery 生成一个唯一的名称)。
$encoded_callback = $_GET['callback'] . '(' . $encoded . ')';
更好的是:停止使用 JSONP。绕过同源策略是一种黑客攻击,它在很多方面限制了你(包括只允许 GET 请求并使你的 API public 而不是能够将其限制为特定来源)。
CORS 为跨源请求提供了一种非 hacky 的完全标准的方法,您应该改用它。
我在 PHP 中创建了一个 JSON API returns
?({"a":"b"})
当我输入
"http://mylink.php?callback=?"
在浏览器中。但是,当我从桌面应用程序(使用 $.ajax)给出相同的 link 时,不会返回结果。创建 JSON API 的 PHP 代码是
<?php
header('Content-Type: application/javascript'); // Also tried application/json
$results = array();
$results['a'] = 'b';
$encoded = json_encode($results);
$encoded_callback = '?' . '(' . $encoded . ')';
echo $encoded_callback;
return $encoded_callback;
?>
javascript代码只包含
$.ajax({
url:url,
dataType:"jsonp",
success:function(data){
... some printing ...
}
});
据了解 当我用另一个 JSON API(不是我创建的)尝试时,它工作正常。所以我认为问题出在我的 API.
怎么了?我觉得缺少了一些东西,以便可以进行通信,但我不知道是什么以及在哪一侧(服务器或客户端)。
$encoded_callback = '?' . '(' . $encoded . ')';
?
不是 JavaScript 中的有效函数名称 (它是 an operator)。您应该将回调参数中指定的函数名称放在那里(这不是 ?
,?
告诉 jQuery 生成一个唯一的名称)。
$encoded_callback = $_GET['callback'] . '(' . $encoded . ')';
更好的是:停止使用 JSONP。绕过同源策略是一种黑客攻击,它在很多方面限制了你(包括只允许 GET 请求并使你的 API public 而不是能够将其限制为特定来源)。
CORS 为跨源请求提供了一种非 hacky 的完全标准的方法,您应该改用它。