使用jQuery将JSON发送到服务器

时间:2010-11-07 14:49:16

标签: javascript jquery json getjson

我需要以JSON Object的形式向我的服务器端发送一个ID数组。我正在使用一个下拉列表,其中可以选择多个值来对它们执行操作。

为了将它们放入数组中,我使用了:

var selectedArray = [];

            var selectObj = document.getElementById('addedList');
            var i=0;
            var count=0;
            for(i=0;i<selectObj.options.length;i++){
                selectedArray[count] = selectObj.options[i].value;
                count++;
            }

现在的问题是,我需要将这些ID发送到服务器。 我一直想把它像JSON对象一样发送,因为它有可变数量的参数。据我所知,您可以将JS对象转换为JSON。

现在我有几个问题:

你能给我一个如何转换它的例子吗?似乎有一百万种方式,其中一种是JSON.stringify(jsObj);。我的对象只包含一组值。据我所知,这将是一个例子:

{ array : ["value1","value2","value3"] }

另一个问题是: 我怎么能用jQuery发送它?我可以使用$ .getJSON将JSON对象发送到服务器吗? (这在引擎盖下使用$ .GET),还是我需要使用$ .POST?

现在我一直在尝试,但无法把它弄出来......

$。getJSON代码

        $.getJSON("removerequest.htm",{ ids: JSON.stringify(selectedArray) }, function(data){
            $('#removerequestdiv').text('');

            $('#removerequestdiv').append('<select name="addedList">');
            for(var index in data){
                $('#removerequestdiv').append('<option value="' + data[index].id + '">' + data[index].voornaam + data[index].familienaam + '</option>');
            }
            $('#removerequestdiv').append('</select>');
        });

1 个答案:

答案 0 :(得分:15)

$.getJSON()例程用于从服务器获取 JSON编码内容 。您的问题恰恰相反:您希望将发送到服务器。

您应该在这里理解术语。 Javascript中没有“JSON对象”这样的东西。它只是某种类型的Javascript对象,在这个意义上它并没有什么特别之处。您要做的是将序列化 Javascript对象转换为单个字符串。该字符串是您将发送到服务器的参数,服务器将反序列化该字符串返回到对象中(在您的服务器代码使用的任何语言的上下文中)。

因此,当你拨打JSON.stringify(obj)时,你得到的只是一个字符串。将这样的字符串传递回服务器与传递任何其他字符串没有什么不同;这只是一个参数。使用$.post()发布它,或者您甚至可以将其填充到简单表单输入元素的值中,并以老式的方式发布表单。