javascript - jQuery.ajax() 在 Chrome 扩展中将 POST 请求作为 GET 发送

标签 javascript jquery ajax google-chrome-extension

我正在构建一个小型 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 和文本“This methods requires 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 中?

谢谢

最佳答案

我相信$.ajax()函数采用“类型”选项,而不是“方法”选项。

默认类型是 GET。

关于javascript - jQuery.ajax() 在 Chrome 扩展中将 POST 请求作为 GET 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188418/

相关文章:

javascript - IE9支持CSS3过渡效果吗?

java - Spring MVC 中的 Ajax 无法正常工作

php - Laravel 中 AJAX POST 请求后出现 422 无法处理的实体错误

javascript - 这个警告是什么意思?每次我重新启动 Node 进程时都会发生这种情况

javascript - CSS 和 JS 未在 Node.js 服务器上加载

JavaScript setTimeout 会导致scrollTop 事件吗?

javascript - Node.js:拆分 n 部分的流内容

javascript - Jquery 通知栏的关闭按钮

php - Wordpress - 检索 'post_type' 的所有帖子,然后按分类法过滤

javascript - 如何将事件监听器添加到我的 javascript 函数