如何使用jQuery发送Ajax的PUT请求

3

在用户授权后,我希望能够写回到我的Google电子表格中。授权已经完成。但是,为了将数据写回电子表格中,我需要像这里所述一样发送PUT请求。这是来自iGoogle小工具的。

我的XML元素是:

var cellUrl = "https://spreadsheets.google.com/feeds/cells/" + key + "/od6/private/full/R2C2";
var XMLData = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gs='http://schemas.google.com/spreadsheets/2006'>" + 
                "<id>" + cellUrl + "</id><link rel='edit' type='application/atom+xml' href='" + cellUrl + "'/>" + 
                "<gs:cell row='2' col='2' inputValue='300'/>" + 
            "</entry>";

我正在发送的AJAX请求如下:

$.ajax({
                url: cellUrl,
                type: "PUT",
                contentType: 'application/atom+xml',
                processData: false,
                data: XMLData,
                error: function(XMLHttpRequest, textStatus, errorThrown){
                    alert(errorThrown);
                }, success: function(data, textStatus, XMLHttpRequest){
                    alert("Succeeded");
                }
            });

然而,它没有回复并且也没有显示任何警报!问题出在哪里?

我应该使用POST方式进行回复吗?我该怎么做?

为了安全起见,我已经隐藏了cellURL密钥。它与我的电子表格url中的密钥类似。


1
这似乎是一个 StackOverflow.com 的问题... - Lipis
你能检查一下请求实际上是在哪里提交的吗?你可以使用Firebug/开发者工具来进行检查。 - Arun P Johny
你使用的是哪个浏览器?根据 jQuery 文档,不是所有浏览器都支持 PUTDELETE 请求类型。你能否检查一下是否可以使用 POST 来解决你的问题。 - Arun P Johny
2个回答

0

你可以尝试类似这样的方法来查看是否有错误:

$.ajax({
        url: cellUrl,
        type: "PUT",
        contentType: 'application/atom+xml',
        processData: false,
        data: XMLData
    }, error: function(XMLHttpRequest, textStatus, errorThrown){
       alert(errorThrown);
    }, success: function(data, textStatus, XMLHttpRequest){
       alert("Succeeded");
    }

);

我已经添加了dataType: "xml"和您的代码,但它什么也没有显示:(!没有警报! - user284291
你确定 $.ajax 请求正在执行吗?在 ajax 请求之前加上 alert("Working!!"); 并确认一下,你能使用 FF/Firebug 或 Chrome 进行调试吗? - Rob
好的!我也已经解决了那个错误。现在它显示“成功”。但是,它还没有写回数据! - user284291
尝试在成功函数中使用alert(data + " , " + textStatus " , " + XMLHttpRequest);,看看是否能够帮助你找出为什么它不起作用的原因... - Rob

0

我的建议

  • 检查“key”resourceID是否需要转义
  • 如果仍然无法正常工作,请尝试将所有内容放入<div>中,并添加<a>标签并使用click事件。对于ajax,请使用iframe。
  • 尝试使用$.ajax({...,data:$(XMLData),...});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接