【问题标题】:AJAX GET request going to error despite getting the response尽管收到响应,AJAX GET 请求仍会出错
【发布时间】:2017-10-20 00:23:30
【问题描述】:

我已经设置了一个 GET 请求来从我的网站的 API 中检索一些 JSON。尽管在控制台的网络选项卡中正确显示了响应和 200 状态(附图片),但它仍然出现错误。我已经通过验证器运行了 JSON 响应,结果很好。有什么问题?

$(document).ready(function() {
    console.log( "ready!" );
    bindProject();
});

function bindProject() {
    $(".project-link").on("click.project", function() {
        console.log("clicked");
        var id = $(this).data("id");
        var $this = $(this);

        loadProject(id, function() {
            $("#previous, #next").show();
        })
    });
}

function loadProject(id, callback) {
    $.get(BASE + "api/page/projects/" + id, {}, function(data) {
        if (data.success == "true") {
            console.log("success");
            $("#project-info").attr("projectid", id);
            $("#project-title").html(data.title);
            $("#project-info").html(data.info);
            $("#project-year").html(data.info);
            $("#project-tags").html(data.tags);
            setProject();
        else {
            console.log("error")
        }
    }, "json")
}

200 STATUS

JSON RESPONSE

【问题讨论】:

  • 你的意思是 console.log('error') 或者....?
  • 另外需要注意的是,您在请求中包含“json”。这意味着响应必须返回有效的 json,即使它只是一个空对象或数组。返回无效的 json 或根本没有 json 将导致 $.get 进入错误处理,因为它无法按预期正确解析。
  • 您可能没有“成功”key 和“真实”value 在data。因此。您提供的整个function() 仅在成功时执行...因为这是成功回调。您无需检查请求是否成功。看documentation
  • 是的。它确实 console.log("error")。我在控制台的网络选项卡中获得的响应通过了 JSON 验证器测试,这足以确定 JSON 是否导致错误?
  • 只是为了准确我之前的评论...如果您想测试请求是否成功并提供回调,请使用@R。博克回答。因为您实际上要做的是检查 json 中的“成功”键是否具有“真”值……这显然不是正确的做法。

标签: jquery json ajax api get


【解决方案1】:

data 是否有属性success?如果您要做的是检查连接是否成功,您可以使用:

$.get( BASE + "api/page/projects/" + id, function(data) {
    alert( "success" );
    })
    .done(function(data) {
        alert( "second success" );
        // handle success case here
    })
    .fail(function(data) {
        alert( "error" );
        // handle error case here
    });

更多信息here。希望对您有所帮助。

【讨论】:

  • 你是对的,我没有设置为 true 的“成功”key。感谢您花时间为连接写检查,我以后会使用它,
猜你喜欢
  • 2018-10-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
相关资源
最近更新 更多