我有一个非常简单的注册表。表单与 jQuery/Ajax 一起发送到 PHP 页面进行处理。我在整个应用程序中到处都使用这个相同的代码,但出于某种原因,在这一页上,它只是不起作用,我试图找出问题所在。这个页面没有什么特别的,它在同一个域上,所以我在这里不知所措......
提交表单时,以下 jQuery 函数处理表单:
var dataString = $(event.target).serialize();
var url = '/post/register.php';
console.log( dataString ); // OUTPUTS firstname=Andrew&email=me@email.com
$.ajax({
type: "POST",
url: url,
data: dataString,
dataType: "text",
error: function(jqXHR,textStatus,errorThrown) {
// ERROR
},
success: handleRegistration
});
控制台显示表单中的数据已正确序列化。
在 PHP 页面 (register.php) 上,我只有以下代码:
$newArr[]= array('email'=>$_POST['email'], 'firstname'=>$_POST['firstname']);
ob_start();
print_r($newArr);
$c=ob_get_contents();
ob_end_clean();
$fp=fopen('test.txt', "wb");
fwrite($fp, $c);
fclose($fp);
这只是将 POST 变量写入名为“test.txt”的 TXT 文件。文本文件显示变量为空:
Array
(
[0] => Array
(
[firstname] =>
[email] =>
)
)
我一生都无法弄清楚为什么它没有收到 POST vars。
任何人?
* 回答 * 我出于演示目的更改了上面的网址,但在我的应用程序中,网址是:
var url = '/post/register';
并且注册文件夹中有一个“index.php”文件。
表单被发送到 PHP 页面,但是因为我错过了尾随的“/”,查询字符串没有正确发送。所以我的问题的答案是简单地将网址更改为:
var url = '/post/register/';
对我来说这是一个多么愚蠢的错误 - 花了太长时间才弄清楚:S