jQuery,JSON:Javascript obj / array to json用于jQuery.ajax

时间:2009-12-11 20:46:06

标签: jquery json

这是与此类似的问题: Convert js Array() to JSon object for use with JQuery .ajax

除了我有一个包含多个数组的对象。

对象看起来像(模拟):

{“用户”:[1,2,3,4],“客户”:[5,6,7,8],“CompletionStatus”:“pastdue”,“DateRange”:“thisweek”}

并且创建如下:

            Filter = new FilterData;

            Filter.Add(9, "Clients");
            Filter.Add(12, "Clients");
            Filter.Add(75, "Clients");

            Filter.Add(9, "Users");
            Filter.Add(12, "Users");
            Filter.Add(75, "Users");

            Filter.SetValue("DateRange", "yesterday");

    function FilterData(){

        this.Users = [];

        this.Clients = [];

        this.Options = [];
        this.Options.CompletionStatus = [];
        this.Options.DateRange = [];

        this.Add = function(id, type){
            this[type].push(id);
            this[type] = this[type].unique();
            return;
        }

        this.Rem = function(id, type){+
            this[type].splice( Filter[type].indexOf(id), 1);
            this[type] = this[type].unique();
            return;
        }

        this.SetValue = function(key, value){
            this.Options[key] = value;
        }

    }

...

如果我这样做:

AjaxRequest = $.ajax({
...
data: Filter,
...
});

似乎obj最终会像:... Users = 1& Users = 2& Users = 3& ....

这导致PHP只看到一个用户的值,这将是最后一个,在本例中为3。

我需要PHP才能正确查看数组:..Users [] = 1& Users [] = 2& Users [] = 3& ....

知道如何纠正这个问题吗?

Example:

In firebug, my post looks like this:

Clients 1
Clients 10
CompletionStatus    pastdue
DateRange   14
Users   2
Users   3
Users   4

and my response looks like this:
page: <?php print_r($_POST) ?>

Array
(
    [Users] => 4
    [Clients] => 10
    [CompletionStatus] => pastdue
    [DateRange] => 14
)

2 个答案:

答案 0 :(得分:2)

在javascript中将用户名更改为用户[]。 'Users []'是javascript对象的有效属性名称:

var o= { 'Users[]': 'hello user' }; 
alert(o['Users[]']);

答案 1 :(得分:2)

您是否可以使用内置的param方法?

http://docs.jquery.com/Internals/jQuery.param

这似乎做你想要的。如果你想要最前沿的版本,它在jQuery 1.4alpha中还有一些更酷的补充。