0

我正在尝试通过 $.ajax 方法将表单值传递给 PHP。我在html中有以下表格:

<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>

和阿贾克斯:

$("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:

<?
$data = $_POST['formInput'];
$data = array();
parse_str($_POST, $data);
print_r($data);
?>

在控制台上打印:

(
     [Array] =>
)

我想要的是让 $data 成为一个关联数组:

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

但似乎 $data 正在作为字符串处理......提前谢谢你!

4

5 回答 5

2

使用data: $('form').serializeArray()代替data: {formInput:formInput},

然后在php端,$_POST就是你想要的数据。

于 2013-04-10T15:32:49.267 回答
2

你需要指定你想要一个关联数组而不是来自json_decode的对象:

json_decode($data, true);

您可能还需要这样做 -

$('form').serializeArray();
于 2013-04-10T15:36:14.173 回答
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");}}
 });
于 2013-04-10T15:32:51.153 回答
1

我们想要的是序列化为一个可以解码的 json 对象。使用这个插件来访问.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 端,您可以轻松解码 JSON

$data = json_decode($_POST['formInput'], true);
于 2013-04-10T15:37:02.893 回答
0

从很好的回应中,我弄清楚了我的问题是什么。当我提交 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!
)

谢谢大家的快速回复

于 2013-04-10T17:21:58.733 回答