我在使用Apache的Linux服务器上遇到问题。每当我通过AJAX POST发布表单(或数据)时,似乎POST值为空。我已经读过它了.htaccess文件可能有问题,但仍未找到解决方案。
我的.htaccess:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} !/product\.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=permanent,L]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_URI} !/product\.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
在我的虚拟主机内:
<Directory /var/www/foldername>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
我在浏览器中记录了表单数据,因此我知道发送到AJAX请求的数据不为空。 但是在需要处理POST请求并发送邮件的PHP文件中,POST值为空。
这是我发布数据的方式:
var data = $('#frmContact').serializeArray();
$.ajax({
type: "POST",
url: "mail.php",
data: data,
success: function () {
// success
},
error: function () {
// problem
}
});
有人有解决方案吗?提前谢谢!
答案 0 :(得分:1)
您的问题是您正在重定向包含.php
的网址,一旦重定向就会导致空POST,您实际需要使用的是:
/mail
因为它将在内部重定向到PHP并保留发布数据。