2

我正在使用 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
});
4

3 回答 3

1

JSON 规范声明键必须有双引号。

你的意思是你的代码因为双引号而不能工作?使用JSON.parse将 JSON 解析回对象;它内置在许多现代浏览器中,或者您可以使用json2库对其进行填充。

于 2012-06-27T12:12:58.310 回答
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" };

它变成:在字符串化

{"name":"John","time":"2pm"}

在这里查看工作示例:http: //jsfiddle.net/v4NHv/

于 2012-06-27T12:24:03.963 回答
0

像这样改变post通话

$.post(
    urlVar,
    {var1:jsonVar},
    function(data){
      //do stuff
   },
   'json'
)
.complete(function(){
   //do other stuff
});

然后当然你需要为你的接收应用程序做一个小周

于 2012-06-27T12:24:25.160 回答