将Javascript变量中的JSON传递给JQuery帖子

时间:2015-08-19 03:29:17

标签: javascript ajax json

我试图通过JQuery帖子从远程位置获取一些数据。当我将数据硬编码发布时,它工作得很好,但是当我将JSON放在javascript变量中然后将其传入时,它不起作用。据我所知,JSON只是一个字符串,所以我&# 39;我不确定区别是什么。

所以,这有效:

$.post( PostURL, {var:"somevalue"}, function( data ) {
  // do something with data
}

但这并不是:

jsonstring = '{var:"somevalue"}';

$.post( PostURL, jsonstring, function( data ) {
  // do something with data
}
显然,我需要发送不同的变量来获取我需要的东西,因此它不能被硬编码。我做错了什么?

2 个答案:

答案 0 :(得分:2)

post()中的数据并不将JSON作为参数而是一个对象,这就是第一个代码有效的原因。您的第二个代码是使用JSON,它是对象的字符串表示而不是实际对象,因此无效。

  

jQuery.post(url [,data] [,success] [,dataType])

     

<强>网址
  类型:字符串
  包含发送请求的URL的字符串。

     

数据
  键入:PlainObject或String
  使用请求发送到服务器的普通对象或字符串。

http://api.jquery.com/jquery.post/

请注意,虽然它表示数据可以采用字符串,但其格式为key=value&key=value

您不需要JSON,只需将对象存储在变量中,而不是将其转换为字符串。

var myData = {var:"somevalue"};
$.post(PostURL, myData, function(data) {
    // do something with data
});

答案 1 :(得分:0)

jsonstring =  JSON.parse('{var:"somevalue"}');

$.post( PostURL, jsonstring, function( data ) {
  // do something with data
}