我试图使一个 AJAX 后同一php页面。
AJAX :
$("#loginForm").submit(function(e) {
e.preventDefault();
var postData = $(this).serialize();
$.post("login.php", postData);
});
postData正确,格式如下:
username=john&password=123123
PHP(同页):
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
echo 'Ajax Request Detected';
}
然而,这个if-check总是返回false,并且回显行永远不会执行。我做错了什么?
5条答案
按热度按时间w8ntj3qf1#
这是在php中检测 AJAX 请求的正确方法:
mo49yndu2#
我建议使用GET参数来识别 AJAX 请求。$_SERVER依赖于Web服务器和JavaScript框架。
->将您的URL更改为login.php?在使用AJAX时, AJAX =1。
cwdobuhd3#
您正在搜索的标头名为“X-Requested-With”(值XMLHttpRequest),无法使用$_SERVER ['HTTP_X_REQUESTED_WITH']检索。
您可以通过对$_SERVER变量使用var_dump自己找到它。或者,您也可以使用浏览器查找发送的标头。
获取脚本中的请求头,可以使用getallheaders函数完成。
http://us3.php.net/manual/en/function.getallheaders.php
a0x5cqrl4#
在vanilla JavaScript中,您需要将以下内容添加到您 AJAX :
我不知道它是如何在jQuery中完成的,但它应该是可行的。
vmpqdwk35#
我尝试了所有建议的答案,但对我有效的是使用下面的代码
我目前使用axios没有修改任何头设置。
根据你的JavaScript包的不同,你可能需要在头文件中定义
ACCEPT
,这样才能对你有效。但是对于大多数 AJAX 包,默认情况下这总是存在的,并且它工作得很好。