我将通过ajax请求将json字符串传递给servlet:
function add() {
$.ajax({
url: "pathToServlet" ,
dataType: "text",
data: ({
name : 'myJsonString'
}),
success: function(data) {
alert('returned!!');
});
}
为了构建这个json字符串,我有一个监听器,当它被触发时,将一个新的json附加到字符串:
var json = "";
json += "{ new json ..... }"
这是构建jSon String的正确方法吗?我应该使用jQuery方法创建一个json对象(如果它们存在)并向其添加元素然后将json对象转换为字符串而不是自己创建json字符串?
答案 0 :(得分: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
,所以您不必担心对JSON字符串进行URL编码; jQuery会为你做的。
JSON.stringify
被定义为ECMAScript5的一部分,并被许多浏览器本地支持,但当然我们中的许多人必须支持过时的浏览器版本。在这些情况下,您可以获得“JSON shim”以将JSON.stringify
添加到没有它的环境中。其中一个可以从his github page的JSON创始人Douglas Crockford获得。
答案 1 :(得分:0)
如果使用jQuery,你可以使用jquery-json,一个非常方便的插件,用JavaScript和jQuery处理JSON。
用法:
var jsonString = $.toJSON(myObject);