0

我将通过 ajax 请求将 json 字符串传递给 servlet:

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

为了构建这个 json 字符串,我有一个监听器,当它被触发时,它会在 string 中附加一段新的 json :

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

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

4

2 回答 2

2

我建议做的是构建一个object,然后当你准备好将它发送到服务器时,通过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到没有它的环境中。其中之一可从 JSON 的创始人 Douglas Crockford 在他的 github 页面上获得

于 2012-05-23T08:56:44.487 回答
0

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

用法:

var jsonString = $.toJSON(myObject);
于 2012-05-23T09:21:36.650 回答