JSONP ajax call to a restfull api


JSONP ajax call to a restfull api

我已经搜索了几天,似乎没有人对此有明确的答案,我开始怀疑这是否是服务器/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 );
});