2012-05-23 246 views
0

我会通过Ajax请求来传递一个JSON字符串到一个servlet:构建JSON树结构

function add() { 
    $.ajax({ 
    url: "pathToServlet" , 
    dataType: "text", 
    data: ({ 
     name : 'myJsonString' 
    }), 
    success: function(data) { 
      alert('returned!!'); 
    }); 
} 

为了建立这个JSON字符串我有一个监听器,发射时追加到一个新的作品的JSON字符串:

var json = ""; 
json += "{ new json ..... }" 

这是建立jSon字符串的正确方法吗?我应该使用jQuery方法创建一个json对象(如果它们存在)并向它添加元素,然后将json对象转换为一个字符串,而不是自己创建json字符串?

回答

2

我推荐做的事情是建立一个对象,然后当你准备发送它到服务器时,通过JSON.stringify序列化对象。

因此,例如

,你可能有一个对象调用data

var data = {}; 

...你也许会定期添加属性:

data.foo = "bar"; 
data.stuff = {nifty: "stuff"}; 

或许data是一个数组:

var data = []; 

...给你添加的东西:

data.push({nifty: "stuff"}); 

然后,当你准备送它:

function add() { 
    $.ajax({ 
    url: "<%=savePortlet%>" , 
    dataType: "text", 
    data: { 
     name : JSON.stringify(data) 
    }, 
    success: function(data) { 
      alert('returned!!'); 
    }); 
} 

因为你传递一个对象入ajax,你不必担心URL编码的JSON字符串; jQuery会为你做。

JSON.stringify被定义为ECMAScript5的一部分,并且被许多浏览器原生地支持,但是我们当然很多人都必须支持过时的浏览器版本。在这些情况下,您可以获得一个“JSON垫片”,将JSON.stringify添加到没有它的环境中。其中一个可以从JSON的创始人道格拉斯克罗克福德的his github page获得。

0

如果使用jQuery,则可以使用jquery-json,这是一个非常方便的插件,可以使用JavaScript和jQuery处理JSON。

用法:

var jsonString = $.toJSON(myObject);