Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Javascript变量中的JSON传递到JQuery post_Javascript_Ajax_Json - Fatal编程技术网

将Javascript变量中的JSON传递到JQuery post

将Javascript变量中的JSON传递到JQuery post,javascript,ajax,json,Javascript,Ajax,Json,我正试图通过JQuery post从远程位置获取一些数据。当我硬编码要发布的数据时,它工作得很好,但当我将JSON放入javascript变量,然后将其传入时,它就不起作用了。据我所知,JSON只是一个字符串,所以我不确定区别是什么 因此,这是可行的: $.post( PostURL, {var:"somevalue"}, function( data ) { // do something with data } 但这并不是: jsonstring = '{var:"somevalue"

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

因此,这是可行的:

$.post( PostURL, {var:"somevalue"}, function( data ) {
  // do something with data
}
但这并不是:

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

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

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

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

$.post( PostURL, jsonstring, function( data ) {
  // do something with data
}
post(url[,数据][,成功][,数据类型])

url
类型:字符串
包含请求发送到的URL的字符串

数据
类型:纯对象或字符串
随请求一起发送到服务器的普通对象或字符串

注意,虽然它说数据可以采用字符串,但它的形式是
key=value&key=value

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

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

第一个示例是对象,第二个示例是字符串。你不仅仅是把它放在变量中,而是在改变它的类型。@spenibus谢谢,我没有意识到我在上面的一个变量上留下了引号,改变了类型,意外地使它工作了。这个答案帮助我编写了最干净的代码(字符串和JSON对象之间没有杂耍),而且它可以工作。谢谢