2009-12-11 53 views
1

這是一個類似的問題,以這樣一種: Convert js Array() to JSon object for use with JQuery .ajaxjQuery的,JSON:使用Javascript OBJ /陣列JSON爲使用jQuery.ajax

除我有在它有幾個陣列的對象。

對象看起來像(模擬的):

{ 「用戶」:[1,2,3,4], 「客戶」:[5,6,7,8], 「CompletionStatus」:「pastdue 」, 「日期範圍」: 「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, 
... 
}); 

似乎物鏡最終將這樣的:...用戶= 1個&用戶= 2 &用戶= 3 & ....

這是導致PHP只看到一個值對於用戶來說,這將是最後一個,在這種情況下3

其中我所需要的PHP正常看到陣列是:..Users [] = 1個&用戶[] = 2個&用戶[] = 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 
) 
+1

你能舉一個'obj'的實際樣子嗎? – 2009-12-11 20:48:07

+0

其實,更好的問題是,你如何建立'obj'? – 2009-12-11 20:52:37

+0

@ Darrell Brogdon:編輯。 – Eli 2009-12-11 21:02:08

回答

2

在javascript中將用戶的名稱更改爲用戶[]。 「用戶[]」是一個有效的屬性名的JavaScript對象:

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

纔有可能爲您只需使用內置在參數的方法?

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

這似乎做你想要什麼。如果您需要最新版本的話,它還會在jQuery 1.4alpha中增加一些更酷的功能。

+0

偉大的思想思想相似,但由於某種原因,param()做同樣的事情。只有一個值。 – Eli 2009-12-11 21:11:07

+0

我得到了不同的結果,請查看:http://jsbin.com/uvige – 2009-12-11 22:14:51

+0

現在應該使用jQuery> = 1.4。 「從jQuery 1.4開始,$。param()方法遞歸地序列化深層對象以適應現代腳本語言和框架,比如PHP和Ruby on Rails。」 - http://api.jquery.com/jQuery.param/ – 2010-01-29 05:33:53