我已经搜索了几天,似乎没有人对此有明确的答案,我开始怀疑它是否是服务器/ api问题而不是ajax问题。
无论如何,我使用Laravel 4构建了一个API。我已经包含了以下链接
基本上它返回以下
{"error":false,"question":[{"id":1,"question_title":"Question 1","question_answer_a":"question1_answer_a","question_answer_b":"question1_answer_b","question_answer_c":"question1_answer_c","question_answer_d":"question1_answer_d","question_correct_answers":"a,b,c","question_explination":"question1_explinaition","question_meta":"question1_metadata","created_at":"2013-03-20 13:03:38","updated_at":"2013-03-20 17:30:10","status":1,"question_id":1,"image_url":"42ac1edf76f16924780df90ce5621476f7a263f7.jpg"}]}
现在我在本地工作并在一个简单的html页面中使用此ajax调用来检索api数据
$.ajax({
type: "GET",
dataType: "jsonp",
contentType: "application/json",
async: false,
url: "http://wld-api.eu1.frbit.net/index.php/api/v1/question",
success: function(data){
alert(data);
}
});
在Firefox firebug(NET选项卡)中,浏览器进行调用,返回200 OK响应和所有JSON数据。我可以单击Response和JSON选项卡,我的所有数据都在那里。
所以我的问题是......
为什么地狱不能成功解雇并提醒我的数据?如果我添加
error: function(data){
alert(data);
}
它会发出警报,但firefox和其他一切都说它是成功的吗?
任何人都可以帮助我吗?
我刚刚在控制台的firebug中注意到它出错了
SyntaxError: invalid label - "error":false,"question":[{"id":3,"question_title":"Question
并指向错误标签?这是一个阻止成功的问题,有人知道吗。
任何建议/解决方案都会成为我的一天
谢谢Sam
答案 0 :(得分:2)
要使用JSONP,您必须tell Laravel to wrap the JSON in a callback function:
return Response::json( $data )->setCallback( Input::get('callback') );
接下来,您必须将回调密钥添加到查询字符串中:
$.ajax({
type: "GET",
dataType: "jsonp",
contentType: "application/json",
async: false,
url: "http://wld-api.eu1.frbit.net/index.php/api/v1/question?callback=?",
success: function(data){
alert(data);
}
});
注意:您可以使用jQuery的$.getJSON()
方法代替$.ajax()
。它更简洁:
$.getJSON("....../api/v1/question?callback=?").done(function ( data ) {
alert( data );
});