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

Posted

技术标签:

【中文标题】通过 jquery ajax 发送结构化表单字段【英文标题】:sending structured formfields trhough jquery ajax 【发布时间】:2014-11-09 03:12:28 【问题描述】:

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

<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(...);

但我喜欢更通用、无需(大量)编辑即可使用的解决方案,类似于序列化版本。

【问题讨论】:

我不确定,但使用 login['username'] 而不是 login[username] 可能会有所帮助 【参考方案1】:

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

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

然后将其添加到您的表单中:

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

【讨论】:

以上是关于通过 jquery ajax 发送结构化表单字段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 通过 Ajax 发送复选框数组的值?

通过 jQuery ajax() 向 PHP 发送多个复选框数据

jQuery在使用ajax验证后提交表单

如何通过 AJAX 将 jquery 对象数据发送到 php?

通过表单与 jquery/ajax 发送 json

使用 django ajax jquery 提交一个文件不起作用的表单