0

我已经搜索了好几天,似乎没有人对此有明确的答案,我开始怀疑它是否是服务器/api问题而不是ajax问题。

无论如何,我使用 Laravel 4 构建了一个 API。它很简单,没有什么复杂的。我已经包含下面的链接

我的问题 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);
     }

它确实警报但Firefox和其他一切都说它是成功的?

任何人都可以帮助我吗?

我刚刚在控制台中的萤火虫中注意到它说的错误

    SyntaxError: invalid label   -   "error":false,"question":[{"id":3,"question_title":"Question

并指向错误标签?这是一个阻止成功发射的问题有人知道吗?

任何建议/解决方案都会让我开心

谢谢山姆

4

1 回答 1

2

为了使用 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 );
});
于 2013-05-30T22:37:27.547 回答