jquery $ .post空数组

时间:2008-11-07 02:18:36

标签: php jquery ajax post

我正在使用jQuery将表单发布到php文件,这是用于验证用户详细信息的简单脚本。

var emailval = $("#email").val();
var invoiceIdval = $("#invoiceId").val();

$.post("includes/verify.php", 
       {invoiceId:invoiceIdval , email:emailval },
       function(data) { 
          //stuff here.
});

PHP代码:

<?php
print_r($_POST);
?>

我看一下firebug中的响应,它是一个空数组。该数组应该至少有一些值。

我无法理解为什么$_POST无法在php文件中运行。 Firebug显示帖子包含发布的内容,电子邮件和发票ID,在php文件中实际上没有收到任何内容。

表格:

<form method="post" action="<?=$_SERVER['PHP_SELF']; ?>" enctype="application/x-www-form-urlencoded">

任何人都知道它在做什么?

感谢


发现了这个 - http://www.bradino.com/php/empty-post-array/

这是一条明智的路线吗?

5 个答案:

答案 0 :(得分:14)

$.post()将数据传递给基础$.ajax()调用,默认设置为application/x-www-form-urlencoded,所以我认为不是这样。

你可以试试这个:

var post = $('#myForm').serialize();    

$.post("includes/verify.php", post, function(data) { 
    alert(data);
});

serialize()来电将抓取form.myForm中的所有当前数据。

答案 1 :(得分:4)

我被同样的问题所困扰,我发现Owen给出的解决方案并不合适。你自己序列化对象,而jQuery应该为你做。在这种情况下你也可以做$ .get()。

我发现在我的情况下,它实际上是从/ mydir到/ mydir /(带有斜杠)的服务器重定向,使POST数组无效。请求被发送到/ mydir

中的index.php

这是在本地计算机上,所以我无法检查HTTP流量。如果我愿意的话,我会早些发现的。

答案 2 :(得分:1)

application/x-www-form-urlencoded

有你的答案。它已经发布了,你只是在寻找$ _POST数组中的变量。你真正想要的是$ _REQUEST。与名称相反,$ _POST包含在请求正文中提交的输入变量,而不管提交方法如何。 $ _GET包含从URL的查询字符串解析的变量。如果您只想要提交变量,请使用$ _REQUEST global。

如果您希望接收文件上传,那么您想要创建一个包含$ _FILES内容的新数组:

$ arguments = $ _REQUEST + $ _FILES;

答案 3 :(得分:0)

我尝试了Owen的给定功能,但也得到了一个空白警报。奇怪但我注意到它会输出一个查询字符串并返回一个空白警报。然后我再次提交,它将提醒正确的帖子值。

还使用id属性在html中设置了字段名称(这是我在以下的jquery教程中完成的方式)。这不允许我的表单字段序列化。当我将id改为name时,它解决了我的问题。

我最终选择了$ .ajax,因为它完成了我想要的工作。

答案 4 :(得分:-1)

我有一个案例,我使用jQuery在使用jQuery提交表单之前禁用所有输入(甚至是我想要的隐藏的输入)。我改变了我的jQuery只禁用“按钮”类型输入,现在提交表单时发布了隐藏的变量!似乎如果您将隐藏的输入设置为禁用,则其值不会以表单形式发布!

更改:

$('input').attr('disabled',true);

为:

$('input[type=button]').attr('disabled',true);