2011-09-30 46 views
0

我試圖通過Ajax將數組傳遞給PHP,但數組正在作爲空字符串傳遞。這是我的代碼創建數組的時候:關聯數組作爲空字符串傳遞

var params = new Array(); 
var inputs = new Array(); 
inputs = $(":input"); 
$.each(inputs, function(key, value) { 
    params[value.id] = value.value; 
}); 

alert(params); 

在此之前,大約有20個輸入看起來像這樣:

<input name="first_name" id="first_name" type="text" class="medium"/> 
<input name="last_name" id="last_name" type="text" class="medium"/> 

alert(params)只是給我一個空字符串。但是,alert(params['first_name'])實際上給了我first_name輸入值。

爲什麼陣列沒有通過?

+0

所以它的到來,通過在PHP也是一個空字符串?你在AJAX調用之前序列化爲JSON嗎?我們真的需要看看AJAX調用和PHP來確定發生了什麼 – WickyNilliams

+1

因爲'Array'只有數字索引。如果你想要一個「關聯數組」,使用對象。 *注意:*如果您想用JSON序列化它,這也適用。 –

+1

不是確切的答案,但如果你想通過ajax發送一個表單看看jQuery .serialize()http://api.jquery.com/serialize/ – afgomez

回答

1

你可以試試這個獲取數據 -

$(document).ready(function() { 
    var params = new Array(); 
    var inputs = $(":input"); 

    $.each(inputs, function(key, value) { 
     //I guess the problem was that params is array and your id's were strings 
     //array's elements are arr[0], arr[1], 
     //not like arr[firstname], arr[lastname], ... 
     params[value.id] = value.value; 
    }); 
    alert(params); 
}); 
//moved everything inside $(document).ready 

本 -

<input name="first_name" id="0" value="1" type="text" class="medium"/> 
<input name="last_name" id="1" value="2" type="text" class="medium"/> 

<!-- Changed id's from string to numbers. --> 

更新:

另外,試試這可能有助於你理解發生了什麼 -

$(document).ready(function() { 
    var params = {}; //use object instead of array 
    var inputs = $(":input"); 

    $.each(inputs, function(key, value) {      
     params[value.id] = value.value; 
    }); 

    for(var prop in params) { 
     alert(prop + " = " + params[prop]); 
    } 
}); 

注意:params是一個對象,現在不是數組。

有了這個 -

<input name="first_name" id="firstname" value="Your first name." type="text" class="medium"/> 
<input name="last_name" id="lastname" value="Your last name." type="text" class="medium"/> 
+0

我需要使用字符串作爲鍵名 – luqita

+0

@luqita:你檢查了第二個嗎? –

+0

感謝,不完全是我在找什麼,但給了我想法用JSON發送它。 – luqita

-1

您不能簡單地將變量傳遞給服務器,您需要將其序列化爲name, value對,或使用JSON。

+0

我這樣做以後,這是爲了表明數組在javascript中是空的 – luqita

-1

我稍微不確定你想通過在JavaScript中創建一個數組來完成這個任務。

您最好的選擇可能是使用JQuery的命令serialize然後使用$ _GET

相關問題