【发布时间】:2013-01-06 21:20:31
【问题描述】:
我正在尝试从本地主机加载一些 JSONP。我有一个 PHP webapp,如果提供了它,它会返回带有回调的 JSON。返回的 JSON 是 100% 有效的(使用 JSON 验证器检查)。网址如下所示:
http://localhost/backstage/public/data/acties?callback=?
现在,当我尝试使用 jQuery AJAX 加载这些数据时,它会提示我“错误”,暗示加载失败。
var url = "http://localhost/backstage/public/data/acties";
$("#debug").click(function() {
console.log("getting data from " + url);
$.ajax({
type:'GET',
url: url,
dataType:'jsonp',
success: function(data){
alert('loaded');
},
error: function(data){
alert('error');
}
});
});
但是,当我转到网络标签时,我看到有人向:
http://localhost/backstage/public/data/acties?callback=jQuery19008035339566413313_1358941083680&_=1358941083681
并且该文件中的内容是有效的 JSON(我再次使用 JSON Validator 对其进行了验证)。数据似乎并没有出现在我的 JavaScript 数据变量中。
作为参考,这是我的 PHP (Zend 1.12) 代码:
public function actiesAction()
{
$data = new Application_Model_DbTable_Actie();
$data = $data->fetchAll();
$callback = htmlspecialchars($_GET["callback"]);
$data = Zend_Json::encode($data);
echo $callback.'('.$data.');';
}
这是你去的时候得到的JSONP
http://localhost/backstage/public/data/acties?callback=?
--> http://pastebin.com/tazcUQAW
请问有人知道怎么解决吗?
【问题讨论】:
-
在此处验证您的 jsonp 响应 json-p.org/validator.html