将Javascript变量中的JSON传递到JQuery post
我正试图通过JQuery post从远程位置获取一些数据。当我硬编码要发布的数据时,它工作得很好,但当我将JSON放入javascript变量,然后将其传入时,它就不起作用了。据我所知,JSON只是一个字符串,所以我不确定区别是什么 因此,这是可行的:将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"
$.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对象之间没有杂耍),而且它可以工作。谢谢