通过jQuery将JavaScript对象发送到web服务器调用-正确的方法是什么?
我试图通过jQuery将JSON数据发送到我的web服务器,但遇到了一个错误。 未捕获的TypeError:无法使用“in”运算符在{“id”:45,“isRead”:true}中搜索“context” 我正在测试的代码:通过jQuery将JavaScript对象发送到web服务器调用-正确的方法是什么?,javascript,jquery,ajax,json,stringify,Javascript,Jquery,Ajax,Json,Stringify,我试图通过jQuery将JSON数据发送到我的web服务器,但遇到了一个错误。 未捕获的TypeError:无法使用“in”运算符在{“id”:45,“isRead”:true}中搜索“context” 我正在测试的代码: var obj = {}; obj.id = 45; obj.isRead = true; var data = JSON.stringify(obj); var url = "/notification/read" $.ajax(url, data, 'applicatio
var obj = {};
obj.id = 45;
obj.isRead = true;
var data = JSON.stringify(obj);
var url = "/notification/read"
$.ajax(url, data, 'application/json', function() {
// code remove notification from the DOM
});
});
有没有更好或更正确的方法来做到这一点?我也不确定在$.ajax调用中是否正确使用了参数
更新我得去工作了
var obj = {
id: 45,
isRead: true
};
var json = JSON.stringify(obj);
var url = "/notification/read"
$.ajax({ url: url,
type:'POST',
contentType: 'application/json',
data: json,
success: function(data, textStatus) {
// do stuff
}
});
我的服务器希望JSON数据作为application/JSON发布。所以我认为我需要所有这些变量是错误的吗?如果没有这些,它将作为GET发送,并且是application/x-www-form-urlencoded。没有stringify,它也不起作用
$.ajax(url, obj);
您需要将对象作为第二个参数发送
{success:success,data:data}文档如下:
必须将参数作为一个对象传递,而不是多个对象传递您向ajax函数传递的参数太多了: 另外,
JSON.stringify
调用是不必要的,jQuery将为您解决这个问题
var obj = {
'id':45,
'isRead':true
};
$.ajax({
url: "/notification/read",
data: obj,
success: function(data, textStatus){
/* code here */
}
});
“回拨应为参数”是什么意思?我是否将数据放在方括号内?或者这意味着可选?关于类型:'POST'-不需要吗?看起来它是发布的,但Firefox显示我正在将id=45&isRead=true发送为application/x-www-form-urlencodeda实际上在我添加类型:'POST'之前它是一个GET。。。奇怪的是,为什么我必须设置额外的参数,而你却不这么做?默认设置是GET。如果要发布数据(未指定),则必须指定该参数。查看我链接到的文档页面。。。它解释了每个选项的默认值。如果您想要的不是默认值,那么必须提供覆盖默认值的选项。此外,我不会过分担心内容类型,除非它对后端代码很重要。如果您的服务器运行的是PHP,那么它实际上并不关心内容mime类型-数据将以$\u POST或$\u GET格式显示。