使用javascript / jQuery构建JSON字符串

时间:2012-06-27 12:06:29

标签: javascript jquery ajax json stringify

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

3 个答案:

答案 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
});

然后当然你需要对你的接收应用程序做一点调整