通过AJAX works发送JavaScript对象,JSON不会';T

通过AJAX works发送JavaScript对象,JSON不会';T,javascript,jquery,json,ajax,rest,Javascript,Jquery,Json,Ajax,Rest,我试图通过AJAX发送数据,我在网上看到的大多数地方都说我需要以JSON的形式发送数据。但是,如果我尝试将其作为JavaScript对象发送,它实际上是可以工作的,如果我尝试将其作为JSON发送,它会给我一个CORS错误(但这是另一个主题:这里有一个指向问题的链接:) 我想我的问题是,将数据作为JavaScript对象而不是JSON发送是否完全合适?这样做有好处吗 例如: 其工作原理如下:(将数据作为JS对象发送): 这不起作用-(以JSON格式发送数据) 所以,我可以从现在开始继续发送JS对象

我试图通过AJAX发送数据,我在网上看到的大多数地方都说我需要以JSON的形式发送数据。但是,如果我尝试将其作为JavaScript对象发送,它实际上是可以工作的,如果我尝试将其作为JSON发送,它会给我一个CORS错误(但这是另一个主题:这里有一个指向问题的链接:)

我想我的问题是,将数据作为JavaScript对象而不是JSON发送是否完全合适?这样做有好处吗

例如:

其工作原理如下:(将数据作为JS对象发送):

这不起作用-(以JSON格式发送数据)


所以,我可以从现在开始继续发送JS对象,只要它能正常工作(就像我现在所做的那样)?

您的JavaScript对象是反序列化JSON。正如所指出的,JSON.stringify序列化要通过网络发送的JavaScript对象。

简短的回答是肯定的

说明: 当在线博客说您需要传递JSON对象时,它们意味着您需要发送Java脚本对象符号对象。当你这样写的时候:

var obj = { xnumber: 1 }

您已经在创建一个JSON对象。这很适合通过ajax调用发送。当您执行JSON stringify操作时,它基本上将上述JSON转换为字符串。因此,服务器无法将其视为JSON对象,它将失败

当您将
data
设置为对象且
contentType
application/JSON
时,jQuery会为您执行
JSON.stringify
。请参阅
contentType
。您可能还想进一步了解,如果使用该值,它如何始终发送飞行前请求…@异端猴子非常感谢!就像你说的,jQuery看起来是自动完成的。这也许可以解释为什么我通过尝试JSON.stringify一个已经字符串化的JSON来得到CORS错误,它会导致语法错误,导致响应不同于code:200,它没有“Access control allow origin”头(只有code:200)或者类似的东西。无论如何,再次感谢。但是var obj={xnumber:1}不是JSON。如果您将JSON.stringify这个JS对象设置为myJSON=JSON.stringify(obj),那么它将变成JSON,结果如下:myJSON={“xnumber”:1}。这里是另一个不同的例子:。。这里有JSON,这是一种用于通过网络发送数据的文本格式,还有objects,而不是JSON。区别如下:
$("#xform").submit(function (event) {
                event.preventDefault();
                var obj = { xnumber: 1 };
                var myJSON = JSON.stringify(obj);
                $.ajax({
                    type: 'GET',
                    url: 'adddresshere',
                    data: myJSON,
                    dataType: 'json',
                    contentType: 'application/json',
                }).done(function (result) {
                    table.clear();
                    table.rows.add(result).draw();
                });
            });
var obj = { xnumber: 1 }