代码之家  ›  专栏  ›  技术社区  ›  Davide Gualano

ajax()在chrome扩展中作为get发送post请求

  •  5
  • Davide Gualano  · 技术社区  · 15 年前

    我正在构建一个小的chrome扩展,它必须通过post-http请求向公司网络中的服务器发送消息,我使用jquery 1.4.1来加速javascript部分的开发。

    我有这个代码来发送请求:

    function send() {
        $.ajax({
            url: "http://mycompany.com/update",
            method: "POST",
            data: {status: "sometest", in_reply_to_status_id: "anId"},
            success: function(data, textStatus) {
                console.log("success");
                console.log(data);
                console.log(textStatus);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                console.log("error");
                console.log(XMLHttpRequest);
                console.log(textStatus);
                console.log(errorThrown);
            },
            complete: function(XMLHttpRequest, textStatus) {
                console.log("complete");            
            }
        });     
    }
    

    以这种方式完成的请求失败了,在chrome日志中,我看到服务器以HTTP状态400和文本“此方法需要POST”响应。

    如果我改为上面的代码:

    function send() {
        $.post("http://sunshine.emerasoft.com/statusnet/api/statuses/update.xml", {status: "sometext", in_reply_to_status_id: "anId"}, function(data) {
            console.log(data)
        }); 
    }
    

    一切正常,HTTP状态为200,服务器端我可以看到我发送的数据被正确保存。

    我需要使用完整的$.ajax()方法,因为在成功或失败的情况下我需要做一些工作,而在请求完成时需要做一些其他工作,所以$.post()是不够的。
    我在调用$.ajax()时是否做了错误的事情,或者存在某种问题,可能是因为我在chrome扩展的xonText中?

    谢谢

    1 回复  |  直到 15 年前
        1
  •  13
  •   Drew Wills    15 年前

    我相信 $.ajax() 函数接受“type”选项,而不是“method”选项。

    默认类型为get。