jQuery Ajax:发送存储在变量中的数据

时间:2013-12-26 17:25:13

标签: jquery ajax json

我需要在jQuery的ajax调用中发送 JSON 数据,如下所示:

$.ajax({
    url: url,
    type: 'POST',
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    data: '{"assessmentId":1,"pageId":1,"currentPage":2}',
    async: false,
    success: function(data) {
    // TO DO
    }
});

这工作正常,但我发送的数据需要存储在这样的变量中:

var jsonSendingData = '{"assessmentId":1,"pageId":1,"currentPage":2}';

一旦我将它保存在变量jsonSendingData中并传入ajax调用,它就会给我错误。

我还尝试将json数据字符串化,如下所示:

var jsonSendingData = JSON.stringify([{"assessmentId":1,"pageId":1,"currentPage":2}]);

它不起作用。我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

您不需要将数据作为字符串发送,jQuery将为您执行此操作。试试这个

var myData = {
  assessmentId: 1,
  pageId: 1,
  currentPage: 2
};

$.ajax({
    url: url,
    type: 'POST',
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    data: myData, //Notice the change here
    async: false,
    success: function(data) {
      // TO DO
    }
});

PS:非常similar answer here。请检查一下。

答案 1 :(得分:1)

存储在变量中时,您不需要引号。

var jsonSendingData = {
    assessmentId:1,
    pageId:1,
    currentPage:2
};

jQuery.ajax({
       url:url,
       type:'POST',
       data:jsonSendingData
  }).done(function(data){
   console.log(data);
 });

否则您必须在请求标头中指定它

var datastring = JSON.stringify(jsonSendingData);

data: datastring,
contentType: "application/json",