4

我正在编写一个基于 Web 的应用程序,它调用服务器以从 REST-ful 应用程序更新服务器中的特定对象。

这是我编写的 javascript 代码。

var sendUrl = url + "v1/items/" + itmId;
$.ajax({
    "type": "PUT",
    "url": sendUrl,
    //"data": {"name": nameVal, "description": descVal},
    "success": function() {
        alert('hai');  //refreshItems();
    },
    "complete": function (jqXHR, textStatus) {
        alert (textStatus);
    }
});

执行此代码时,服务器没有收到任何请求。浏览器没有显示任何更新。

我使用谷歌浏览器作为我的浏览器。所以,我查看了 Chrome 的 Javascript 控制台,控制台显示了这个错误:

来自 Chrome 控制台的错误

这个问题有什么可能的解决方案吗?


编辑:

正如其中一条评论所建议的那样,我尝试查看网络面板。似乎它没有调用服务器。

这是此特定请求的屏幕截图: 在此处输入图像描述

图像非常小。状态为“(失败)”,类型为待处理

如果服务器没有配置 PUT,则会导致内部服务器错误。所以,这不会发生在这里。


编辑

在尝试了答案中给出的建议后,

这是代码:

var sendUrl = url + "v1/items/" + itmId;
$.ajax({
    "type": "PUT",
    "url": sendUrl,
    //"data": {"name": nameVal, "description": descVal},
    }).done(function ( ) {
        alert('OK');
    }).fail(function ( jqXHR, textStatus, errorThrown ) {
        console.log(jqXHR);
        console.log(textStatus);
        console.log(errorThrown);
    });

以下是已记录的对象:

在此处输入图像描述

4

1 回答 1

7

关于 http/1.1 状态代码的 jquery Ajax 函数 W3 规范的文档


首先,如 jQuery 文档中所述

弃用通知:jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调自 jQuery 1.8 起已弃用。要为最终删除准备代码,请改用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always()。

此外,fail 函数接受以下参数:

jqXHR, textStatus, errorThrown

由于您遇到错误,请尝试以下代码:

var sendUrl = url + "v1/items/" + itmId;
$.ajax({
    "type": "PUT",
    "url": sendUrl,
    //"data": {"name": nameVal, "description": descVal},

}).done(function ( ) {
    alert('OK');

}).fail(function ( jqXHR, textStatus, errorThrown ) {
    console.log(jqXHR);
    console.log(textStatus);
    console.log(errorThrown);
});

这应该向控制台输出有关为什么 ajax 调用不起作用的有用信息。

如果您的网络服务正常工作,它应该返回一个 http 状态代码。以下是一些常见的响应代码:

200 OK -> Everything is ok (it worked)
201 Created -> Ok too

400 Bad Request
401 Unauthorized
404 Not found

所以,基本上,你得到的回应应该反映它为什么不起作用

于 2013-02-21T00:39:22.660 回答