通过jquery ajax发送结构化表单字段

时间:2014-09-15 14:42:00

标签: javascript php jquery ajax jquery-mobile

我省略了所有不相关的标签:

<form id="loginform">
    <input name=login[username] />
</form>
<script
    $.ajax ({
        url: 'login.php',
        data: {
            action : 'login',
            formData : $('#loginform').serialize()
        },
        type: 'post',
        async: 'true',
        dataType: 'json',
        ...
    });
</script>

我试过

在PHP中我执行print_r($ _ POST)我希望收到以下数据:

Array {
    action = login
    formData = Array {
        login = Array {
            username = xxxxxxx
        }
    }
}

我需要它在我的(第一个)jquery移动项目中实现它,因为我习惯在我的所有其他项目中使用它。如果发布的数据已经结构化,它可以节省我在PHP开发上的大量时间。

我试过了:

formData : $('#loginform').serialize()

formData : $('#loginform').serializeArray()

我当然可以使用:

formData = new FormData();
formData.append(...);

但是我喜欢更通用的,总是可用的,没有(很多)编辑解决方案,类似于序列化版本。

1 个答案:

答案 0 :(得分:0)

我不是PHP编码器,但看起来你的PHP代码需要一个Array,而是发送一个字符串值。您必须在PHP中执行Split(';')Split('=')函数以将序列化数据解析为数组。或者不要指望PHP中的数组并单独请求每个字段,然后您可以这样做:

   ...
   data: $('#loginform').serialize(),

然后在表单中添加:

 <input type="hidden" name="action" value="login"/>