我尝试使用ajax构建一个小日志。我按照指南,但他在PHP中没有类和函数构建。当我尝试通过将它放在类和函数中来重建整个应用程序时,我收到此错误:Undefined index: is_ajax
和我的代码:
<?php
class Login{
public function LoggedIn(){
$is_ajax = $_REQUEST['is_ajax'];
if(isset($is_ajax) && $is_ajax)
{
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
if($username == 'demo' && $password == 'demo')
{
echo "success";
}
}
}
}
?>
观点:
public function DoLoginBox() {
$Login = new Login();
//inloggning form-tagg...
return '<p> </p>
<div id="content">
<h1>Login Form</h1>
<form id="form1" name="form1" action="'. $Login ->LoggedIn(). '" method="post">
<p>
<label for="username">Username: </label>
<input type="text" name="username" id="username" />
</p>
<p>
<label for="password">Password: </label>
<input type="password" name="password" id="password" />
</p>
<p>
<input type="submit" id="login" name="login" />
</p>
</form>
<div id="message"></div>
</div>';
}
答案 0 :(得分:0)
你应该使用
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
而不是
if(isset($is_ajax) && $is_ajax)
答案 1 :(得分:0)
更改此行:
$is_ajax = $_REQUEST['is_ajax'];
成:
$is_ajax = !empty($_REQUEST['is_ajax']);
您可以删除isset($is_ajax)
NB :为此,执行AJAX请求的javascript
必须在请求中添加is_ajax=1
(或其他一些非空值)!这不是开箱即用的。
答案 2 :(得分:0)
该行
$is_ajax = $_REQUEST['is_ajax'];
每次调用LoggedIn()函数时都会执行此操作,如果它是AJAX(我猜你是从浏览器添加参数is_ajax)。
而是使用像
这样的东西if(isset($_REQUEST['is_ajax']))
答案 3 :(得分:0)
未定义索引:XYZ表示, 你有一个数组,你通过索引请求它的项目,但该索引不存在。
示例:
$array = array("a"=>1,"c"=>3);
echo($array["b"]);
你可以检查存在:
if(!isset($array["b"]))die("Missing XYZ!");
答案 4 :(得分:0)
所有浏览器和服务器都不支持HTTP_X_REQUESTED_WITH标头。您应该使用专门的get或post请求,例如?is_ajax=1
参见相关主题:Does $_SERVER['HTTP_X_REQUESTED_WITH'] exist in PHP or not?