我试图通过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
}
显然,我需要发送不同的变量来获取我需要的东西,因此它不能被硬编码。我做错了什么?
答案 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
}