我已经搜索了几天,似乎没有人对此有明确的答案,我开始怀疑这是否是服务器/api问题,而不是ajax问题。
无论如何,我已经使用Laravel 4构建了一个API。它非常简单,一点也不复杂。我已经在
下面添加了链接my question 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数据。我可以点击响应和JSON选项卡,我所有的数据都在那里。
我的问题是....
为什么不成功启动并提醒我的数据?如果我加上
error: function(data){
alert(data);
}
它会发出警告,但火狐和其他所有东西都说它是成功的?
有人能帮我吗?我刚刚注意到在控制台的firebug中,错误下面写着
SyntaxError: invalid label - "error":false,"question":[{"id":3,"question_title":"Question
并指向错误标签?有人知道这个问题会阻止成功解雇吗?
任何建议/解决方案都会让我很开心
谢谢山姆
为了使用JSONP,你必须告诉Laravel将JSON封装在回调函数中:
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 );
});