通过 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 发送多个复选框数据