通过jQuery将JavaScript对象发送到Web服务器调用 - 正确的方法是什么?

时间:2011-08-04 19:09:47

标签: javascript jquery ajax json stringify

我正在尝试通过jQuery将JSON数据发送到我的Web服务器,而且我遇到了错误。 未捕获的TypeError:不能使用'in'运算符来搜索{“id”中的'context':45,“isRead”:true}

我正在测试的代码:

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电话上找到了params。

更新
代码我开始工作

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,它也无法正常工作。

3 个答案:

答案 0 :(得分: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 */
  }
});

答案 1 :(得分:0)

$.ajax(url, obj);

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

{success:success,data:data}

答案 2 :(得分:0)

文档在这里:

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

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