我一直在向控制台添加日志,以便在不使用Firefox调试器的情况下检查不同变量的状态.
但是,在我console.log在我的main.js文件中添加一个的许多地方,我收到以下错误而不是我可爱的小手写消息给自己:
主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用.如需更多帮助http://xhr.spec.whatwg.org/
我console.log可以添加到我的代码使用的替代品或包装器,这不会导致此错误?
我做错了吗?
像许多其他人一样,我的网站正在使用jQuery.当我打开开发人员工具时,我看到一条警告说XMLHTTPRequest是
由于其对最终用户体验的不利影响而被弃用.
我继续阅读部分文档,但这是相当技术性的.有人可以用简单的术语解释从XMLHTTPRequest转换为WHATWG的后果吗?它说它发生在2012年.
此外,文档说工作人员之外的同步XMLHttpRequest正在从Web平台中删除,当发生这种情况时,如果用户代理在服务中拥有它们,他们是否需要修改现有代码?
如何使ajax请求同步?
我有一张需要提交的表格.但只有在用户输入正确的密码时才需要提交.
这是表单代码:
<form name="form" action="insert.php" method="post" onSubmit="return ajaxSubmit(this);" >
Run Code Online (Sandbox Code Playgroud)
用于发送和检查密码的jquery代码如下:
var ajaxSubmit = function(formE1) {
var password = $.trim($('#employee_password').val());
$.ajax({
type: "POST",
async: "false",
url: "checkpass.php",
data: "password="+password,
success: function(html) {
var arr=$.parseJSON(html);
if(arr == "Successful") {
return true;
} else {
return false;
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是,无论ajax请求返回的值如何,表单始终都会提交.我检查了其他一切.当输入正确的密码时,arr的值将变为"成功",反之亦然.
如何使此请求同步?就我可以调试而言,请求是异步的,因此在请求完成之前提交表单.
checkpass.php的代码
<?php
require("includes/apptop.php");
require("classes/class_employee.php");
require("classes/class_employee_attendance.php");
$employee_password=$_POST['password'];
$m=new employee();
$m->setbyid_employee(1);
$arr=$m->editdisplay_employee();
if($arr['employee_password'] == $employee_password)
{
$res="Successful";
}
else
{
$res="Password not match";
}
echo $res;
?>
Run Code Online (Sandbox Code Playgroud)
更新:已找到解决方案.
正如Olaf Dietshche指出的那样:返回值ajaxSubmit …
jquery ×3
ajax ×2
backbone.js ×1
console.log ×1
debugging ×1
firefox ×1
javascript ×1
synchronous ×1