2013-04-10 151 views
0

我試圖通過$ .ajax方法將表單值傳遞給PHP。我在HTML格式如下:將ajax關聯數組傳遞給php關聯數組

<form> 
<p> 
    <label for="login">User ID:</label> 
    <input type="text" name="login" id="login" value="user name"> 
</p> 

<p> 
    <label for="password">Password:</label> 
    <input type="password" name="password" id="password" value="password"> 
</p> 
</form> 

和Ajax:

$("form").submit(function(event) { 
var formInput = $('form').serialize();// tried with serializeArray() also 

var request = $.ajax({ 
    type: "POST", 
    url:"../some.php", 
    data: {formInput:formInput}, 
    statusCode: { 
       404: function() { alert("file not found");}} 

}); 

PHP:

​​

在控制檯它打印:

(
    [Array] => 
) 

我想要的是用於$ data是一個關聯數組,如下所示:

$data = array(
     'login' => 'foo' 
     'password' => 'bar' 
     ); 

但它看起來像$數據正在處理作爲一個字符串... 先謝謝您!

回答

2

使用data: $('form').serializeArray()而不是data: {formInput:formInput},

然後在PHP端,$_POST是你想要的數據。

+0

感謝您的回覆!這工作。我猜數據:{formInput:formInput},把已經序列化的數組再次放入數組中?謝謝! – dts316 2013-04-10 17:10:29

1

,而不是這樣的:

$("form").submit(function(event) { 
var formInput = $('form').serialize();// tried with serializeArray() also 

var request = $.ajax({ 
    type: "POST", 
    url:"../some.php", 
    data: {formInput:formInput}, 
    statusCode: { 
       404: function() { alert("file not found");}} 
}); 

使用本:

$("form").submit(function(event) { 
var formInput = $('form').serialize();// tried with serializeArray() also 

var request = $.ajax({ 
    type: "POST", 
    url:"../some.php", 
    data: formInput, 
    statusCode: { 
       404: function() { alert("file not found");}} 
}); 
+0

對不起..但我沒有看到在代碼中的區別...我是否可以俯視一些東西? – dts316 2013-04-10 15:54:08

+0

查看數據參數 – Oussama 2013-04-10 15:54:43

+0

我改變了這一行:'data:{formInput:formInput},'this:'data:formInput,' – Oussama 2013-04-10 16:10:08

2

你需要指定json_decode你想要一個關聯數組,而不是一個對象:

json_decode($data, true); 

你可能還需要這樣做 -

$('form').serializeArray(); 
+0

.serializeArray()爲我做了。謝謝! – dts316 2013-04-10 17:06:36

1

我們想要的是序列化到一個json對象,然後可以解碼。使用THIS插件可以訪問.serializeObject

$("form").submit(function(event) { 
var formInput = $('form').serializeObject(); 
formInput = JSON.stringify(formInput); 

var request = $.ajax({ 
    type: "POST", 
    url:"../some.php", 
    data: {formInput:formInput}, 
    statusCode: { 
       404: function() { alert("file not found");}} 

}); 

然後在PHP端你可以從大的反應很容易

$data = json_decode($_POST['formInput'], true); 
+0

感謝您的快速回復。但是,現在僅打印「
」。它顯示爲空。 – dts316 2013-04-10 15:55:56

+0

你說得對。我已經更新了我的答案。 – Fresheyeball 2013-04-10 16:12:48

+0

再次感謝您的快速回復!這比我想要的要多得多。真的apprciated! – dts316 2013-04-10 17:05:43

0

解碼JSON我已經想通了什麼我的問題是。 當我提交POST時,我把數組放入數組中。

以下Ajax代碼:

$("form").submit(function(event) { 
var formInput = $('form').serialize();// tried with serializeArray() also 

var request = $.ajax({ 
type: "POST", 
url:"../some.php", 
data: {formInput:formInput}, 
statusCode: { 
      404: function() { alert("file not found");}} 
}); 

改爲:

$("form").submit(function(event) { 
var formInput = $('form').serializeArray(); 

var request = $.ajax({ 
type: "POST", 
url:"../some.php", 
data: formInput, 
statusCode: { 
      404: function() { alert("file not found");}} 
}); 

和PHP改爲:

<? $data = $_POST; 
    print_r($data); ?> 

上cosole它究竟印刷了我想要的東西:

Array 
(
[login] => admin 
[password] => qwerty123! 
) 

謝謝大家的快速回復