Отправить объект JavaScript на вызов веб-сервера через jQuery - как правильно? - PullRequest
1 голос
/ 04 августа 2011

Я пытаюсь отправить данные JSON на свой веб-сервер через jQuery, и у меня возникает ошибка.Uncaught TypeError: Невозможно использовать оператор «in» для поиска «context» в {"id": 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
    });
});

IsЕсть ли лучший или более правильный способ сделать это?Не уверен, правильно ли я получаю параметры при вызове $ .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 это тоже не сработало.

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

Вы передаете слишком много аргументов функции 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 */
  }
});
0 голосов
/ 04 августа 2011

Документация здесь:

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

Вы должны передавать параметры как один объект, а не как несколько

0 голосов
/ 04 августа 2011
$.ajax(url, obj);

Вам необходимо отправить объект как второй параметр

{успех: успех, данные: данные}

...