我正在使用jQuery中的$ .post()函数来使用JSON字符串进行Ajax调用。电话看起来像这样:
$.post(
urlVar,
jsonVar,
function(data){
//do stuff
},
'json'
)
.complete(function(){
//do other stuff
});
创建 jsonVar 我正在使用此代码
var1 = {};
var1.id = fooId;
var1.amount = fooAmount;
var1.zoom = fooZoom;
jsonVar = JSON.stringify(var1);
要使通话有效, jsonVar 应如下所示
{id:fooId, amount:fooAmount, zoom:fooZoom}
但它看起来像这样
{"id":fooId, "amount":fooAmount, "zoom":fooZoom}
现在我的代码无效,因为双引号。我无法弄清楚如何摆脱这些。任何人都可以帮助我吗?
重要:
如果我将$.post()
函数放在这样的代码中,代码就可以了:
$.post(
urlVar,
{id: fooId, amount: fooAmount, zoom: fooZoom},
function(data){
//do stuff
},
'json'
)
.complete(function(){
//do other stuff
});
答案 0 :(得分:1)
JSON specification表示密钥必须有双引号。
你的意思是什么意思你的代码因双引号而无法工作?使用 JSON.parse 将JSON解析回对象;它是内置于许多现代浏览器中的,或者您可以使用json2库来填充它。
答案 1 :(得分:0)
鉴于此代码:
var fooId = 'foodyfood';
var fooAmount = 10.20;
var fooZoom = 'zoomer';
var var2 = {};
var var1 = {};
var1.id = fooId;
var1.amount = fooAmount;
var2.zoom = fooZoom;
jsonVar = JSON.stringify(var1);
$('#showme').text(jsonVar);
showme中显示的值为:
{"id":"foodyfood","amount":10.2}
因此,您的示例似乎存在缺陷,实际上并非JSON标准,它指定了双引号。
编辑:现在你对帖子的使用是公平的:$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType
});
除了在编辑后它将对象作为第二个示例中的对象处理。
请参阅此处文档中的示例:http://api.jquery.com/jQuery.post/
使用此表格:
$.post("test.php", { name: "John", time: "2pm" }, function(data) {
alert("Data Loaded: " + data);
});
所以如果你有:
var mytest = { name: "John", time: "2pm" };
它变成:在stringify上
{"name":"John","time":"2pm"}
请参阅此处的工作示例:http://jsfiddle.net/v4NHv/
答案 2 :(得分:0)
像这样更改post
电话
$.post(
urlVar,
{var1:jsonVar},
function(data){
//do stuff
},
'json'
)
.complete(function(){
//do other stuff
});
然后当然你需要对你的接收应用程序做一点调整