JavaScript - Создание объекта JSON - PullRequest
9 голосов
/ 26 марта 2010

Я пытаюсь понять, как построить объект JSON в JavaScript. Этот объект JSON будет передан в вызов ajax JQuery. В настоящее время я жестко программирую свой JSON и выполняю свой вызов JQuery, как показано здесь:

$.ajax({
  url: "/services/myService.svc/PostComment",
  type: "POST",
  contentType: "application/json; charset=utf-8",
  data: '{"comments":"test","priority":"1"}',
  dataType: "json",
  success: function (res) {
    alert("Thank you!");
  },
  error: function (req, msg, obj) {
    alert("There was an error");
  }
});        

Этот подход работает. Но мне нужно динамически собрать мой JSON и передать его в вызов JQuery. Однако я не могу понять, как динамически построить объект JSON. В настоящее время я безуспешно пробую следующее:

var comments = $("#commentText").val();
var priority = $("#priority").val();
var json = { "comments":comments,"priority":priority };

$.ajax({
  url: "/services/myService.svc/PostComment",
  type: "POST",
  contentType: "application/json; charset=utf-8",
  data: json,
  dataType: "json",
  success: function (res) {
    alert("Thank you!");
  },
  error: function (req, msg, obj) {
    alert("There was an error");
  }
}); 

Может кто-нибудь сказать мне, что я делаю не так? Я заметил, что со второй версией мой сервис даже не достигает.

Спасибо

Ответы [ 5 ]

8 голосов
/ 26 марта 2010

Возможно, вы захотите взглянуть на библиотеку JSON JavaScript . Он имеет функцию stringify(), которая, я думаю, будет делать именно то, что вам нужно.

6 голосов
/ 09 мая 2012

Ваш код:

var comments = $("#commentText").val();
var priority = $("#priority").val();
var json = { "comments":comments,"priority":priority };

Извлечь цитаты (строка 3):

var comments = $("#commentText").val();
var priority = $("#priority").val();
var json = { comments: comments, priority: priority };
3 голосов
/ 26 марта 2010

Удалить кавычки

data: '{"comments":"test","priority":"1"}',

становится

data: {"comments":"test","priority":"1"},

JSON - это объекты, а не строки.

2 голосов
/ 15 сентября 2011

это работает для меня.

var json = "{ 'comments': '" + *comments* +"','priority:' '" + *priority* +"' }";

курсивом являются переменные.

2 голосов
/ 26 марта 2010

Это должно работать

var json = { comments: "comments",priority: "priority" };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...