1

我正在尝试通过 jQuery 将 JSON 数据发送到我的 Web 服务器,但遇到了错误。未捕获的类型错误:无法使用 '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, '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 它也不起作用。

4

3 回答 3

2

您向 ajax 函数传递了太多参数:http: //api.jquery.com/jQuery.ajax/

此外,JSON.stringify调用不是必需的,jQuery 会为您处理。

var obj = {
  'id':45,
  'isRead':true
};
$.ajax({
  url: "/notification/read",
  data: obj,
  success: function(data, textStatus){
    /* code here */
  }
});
于 2011-08-04T19:16:39.567 回答
0
$.ajax(url, obj);

您需要发送一个对象作为第二个参数

{成功:成功,数据:数据}

于 2011-08-04T19:12:29.240 回答
0

文档在这里:

http://api.jquery.com/jQuery.ajax/

您必须将参数作为一个对象传递,而不是多个对象

于 2011-08-04T19:12:43.147 回答