2013-04-10 148 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! 
) 

谢谢大家的快速回复