javascript - 使用 REST 发送 ajax 请求可以,但不能使用 jQuery

标签 javascript jquery ajax

我正在尝试发送 ajax 调用。我使用了名为 Postman 的 Chrome REST 测试扩展 [Link to it] 。当我使用扩展名发送调用时,它可以工作,但是当我通过 jQuery 发送它时,它不起作用,并且我收到一条错误消息:“错误 0”。

这是Postman工具发送到服务器的请求:

POST /form/front HTTP/1.1
Host: go.com
Cache-Control: no-cache

{ "sitename": "AAGx", "zone": 12, "sector": 34, "square": 7} 

这是我向服务器发送请求的代码:

function insert_newform() {
    form_data = {sitename: 'AAGx', zone: 12, sector: 34, square: 7}
    $.ajax({
            type: "POST",
            url: 'http://go.com/form/front', 
            data: JSON.stringify(form_data),
            success: function(result) { alert("good!") },
            error: function(jqXHR, textStatus, errorThrown) { alert(textStatus) }
    });
}

$("#show").click(function() {
        insert_newform()
    }
    );

我无法找出我的通话出了什么问题!

编辑:go.com 只是一个例子!

EDIT2:我要疯了。

Edit3:我更新了代码以添加 JSON.stringify()

Edit4:当我将文件放在服务器上并运行脚本时,它工作得很好,一切都很好!但是,当我在计算机上本地运行这些文件时,调用不起作用,并且出现该错误。我真的要疯了!我不知道出了什么问题:(

Edit5:也许这与 CORS 这个东西有关?但是为什么它可以在 Chrome 插件中运行,但不能在本地脚本中运行?!!

最佳答案

如果您的 data 属性是 JavaScript 对象,jQuery 会将其转换为表单数据进行传输。 postman 可能将其作为实际字符串发送。尝试将您的数据括在单引号中:

data: '{"sitename": "AAGx", "zone": 12, "sector": 34, "square": 7}', ...

编辑:根据您的编辑,我几乎可以向您保证这是一个 CORS(跨源资源共享)问题。 AJAX 和 JavaScript 通常受到各种安全限制。限制 JavaScript 能力的最核心的安全概念之一是 Same Origin Policy 。这个想法是为了防止 XSS ( cross-site scripting ) 攻击。

jQuery的AJAX函数will give an error code of 0 if it experiences CORS issues .

有关于how local files are under more strict security constraints here的详细解答这完美地解释了你的情况。

您的解决方案是发送 Access-Control-Allow-Origin来自服务器的 header (如果您可以控制服务器)。否则,您可以尝试使用 JSONP,它不使用 XMLHTTPRequest 对象,并且不受相同安全约束的约束。

关于javascript - 使用 REST 发送 ajax 请求可以,但不能使用 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25810559/

相关文章:

Javascript 无法按名称找到 Div 元素

javascript - 未应用常量文件中的设置颜色

javascript - 如何在 jquery 中使用 php 数组

php - php foreach 循环中的 Ajax 调用

javascript - NoReverseMatch,反向登录未找到错误

php - 无法从 Codeigniter 中的 JQuery Ajax 请求中检索 Post 数据

javascript - 如何以编程方式选择一个选项作为所选选项?

javascript - 无法让固定 div 停在页脚上方,我错过了什么?

java - 休息 Controller 工作,但 ajax post 方法返回错误

javascript - 链式 express 方式