jquery $.post empty array
我正在使用jQuery将表单发布到php文件,这是用于验证用户详细信息的简单脚本。
1 2 3 4 5 6 7 8 | var emailval = $("#email").val(); var invoiceIdval = $("#invoiceId").val(); $.post("includes/verify.php", {invoiceId:invoiceIdval , email:emailval }, function(data) { //stuff here. }); |
PHP代码:
1 2 3 |
我看一下萤火虫中的响应,它是一个空数组。 该数组应至少具有一些值。
我无法弄清楚为什么
表格:
1 | <form method="post" action="<?=$_SERVER['PHP_SELF']; ?>" enctype="application/x-www-form-urlencoded"> |
有人知道它在做什么吗?
谢谢
找到了这个-http://www.bradino.com/php/empty-post-array/
那条明智的路要走?
你可以试试这个吗?
1 2 3 4 5 | var post = $('#myForm').serialize(); $.post("includes/verify.php", post, function(data) { alert(data); }); |
我被同一个问题咬住了,我发现欧文给出的解决方案不合适。您可以自己序列化对象,而jQuery应该为您完成。在这种情况下,您也可以执行$ .get()。
我发现在我的情况下,实际上是从/ mydir到/ mydir /(带斜线)的服务器重定向使POST数组无效。该请求已发送到/ mydir中的index.php
这是在本地计算机上,因此我无法检查HTTP流量。我会早发现的。
1 | application/x-www-form-urlencoded |
有你的答案。它被发布了,您只是在$ _POST数组中寻找变量。您真正想要的是$ _REQUEST。与名称相反,$ _ POST包含在请求正文中提交的输入变量,而与提交方法无关。 $ _GET包含从URL的查询字符串解析的变量。如果只想提交变量,请使用$ _REQUEST全局变量。
如果您希望接收文件上传,则要创建一个包含$ _FILES内容的新数组:
$ arguments = $ _REQUEST + $ _FILES;
我尝试了Owen的给定功能,但也收到了空白警报。奇怪,但我注意到它将输出查询字符串并返回空白警报。然后我会再次提交,它将以正确的帖子值发出警报。
还使用id属性在html中设置了字段名称(这是我在遵循的jquery教程中所做的操作)。这不允许我的表单字段进行序列化。当我将ID切换为名称时,它解决了我的问题。
毕竟,我最终还是选择了$ .ajax,因为它确实满足了我的期望。
我有一种情况,就是在使用jQuery提交表单之前,我使用jQuery禁用了所有输入(甚至是我想要的隐藏输入)。我将jQuery更改为仅禁用"按钮"类型输入,现在在提交表单时发布了隐藏的变量!看来,如果将隐藏输入设置为禁用,则其值不会与表单一起发布!
已更改:
1 | $('input').attr('disabled',true); |
至:
1 | $('input[type=button]').attr('disabled',true); |