我正在尝试通过AJAX发送数据,我在网上阅读的大多数地方都说我需要将其作为JSON发送。但是,如果我尝试将其作为JavaScript对象发送,则它实际上可以工作,而如果我尝试将其作为JSON发送,则会给我一个CORS错误(但这是另一个主题:这里是问题的链接:API Gateway CORS: no 'Access-Control-Allow-Origin' header (NON-PROXY))。
我想我的问题是,将数据作为与JSON相对的JavaScript对象发送对我来说是否完美?彼此相比有好处吗?
示例:
这有效:(将数据作为JS对象发送):
$("#xform").submit(function (event) {
event.preventDefault();
var obj = { xnumber: 1 };
$.ajax({
type: 'GET',
url: 'adddresshere',
data: obj,
dataType: 'json',
contentType: 'application/json',
}).done(function (result) {
table.clear();
table.rows.add(result).draw();
});
});
这不起作用-(将数据作为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();
});
});
所以我可以从现在开始一直坚持发送JS对象(只要它现在对我有用)吗?
答案 0 :(得分:-1)
简答是。
说明: 当在线博客说您需要传递JSON对象时-它们意味着您需要发送Java Script Object Notation对象。像这样写时:
var obj = { xnumber: 1 }
您已经在创建JSON对象。这是通过ajax调用发送的好方法。当您执行JSON字符串化操作时,它基本上会将上述JSON转换为字符串。因此,服务器无法将其视为JSON对象,并且将失败。
答案 1 :(得分:-2)
您的JavaScript对象是反序列化的JSON。正如Heretic Monkey所指出的那样,JSON.stringify会序列化您的JavaScript对象,以通过网络发送。