【问题标题】:sending structured formfields trhough jquery ajax通过 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] 可能会有所帮助

标签: javascript php jquery ajax jquery-mobile


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多