我正在尝试学习 JSONP。根据我在网上的研究,我了解到它是带有回调的调用函数。除此之外,其他所有内容(数据处理方式/数据格式)都类似于 JSON?
我只是在玩 JSONP,如下所示。但它返回错误,请详细解释一下......
脚本.js
function test(){
jQuery.ajax({
url: "/plugins/system/chat/jsonstr.php",
dataType: "jsonp",
jsonpCallback: "logResults"
});
jsonstr.php
logResults(){
$arr = '[{
"title": "keren",
"picture": "http://something.png",
"id":1
}, {
"title": "diana",
"picture": "/plugins/system/conversekit/conversekit/images/avatar.png",
"id": 2
}]';
echo $arr;
}
我希望这个调用返回 json 对象,以便我可以在测试的成功函数中操作它。但抛出如下错误:
<br />
<b>Parse error</b>: syntax error, unexpected '{' in <b>C:\projects\easysocial.com\plugins\system\conversekit
\jsonstr.php</b> on line <b>14</b><br />
控制台中的url是这样的:
GET http://mysite.localhost.com/plugins/system/chat/jsonstr.php?callback=logResults
最佳答案
logResults() 是 JavaScript 回调,而不是 PHP 函数。 jsonstr.php 应该只返回有效的 JSON。
所以 jsonstr.php 应该是这样的
<?php
$arr = [
[
'title' => "keren",
'picture' => "http://something.png",
'id' => 1,
],
[
'title' => "diana",
'picture' => "/plugins/system/conversekit/conversekit/images/avatar.png",
'id' => 2,
],
];
echo(json_encode($arr));
和 Script.js
function logResults() {
console.log('ajax done');
}
function test(){
jQuery.ajax({
url: "/plugins/system/chat/jsonstr.php",
dataType: "jsonp",
jsonpCallback: logResults
});
}
关于javascript - JSONP 回调返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38260943/