像许多其他人一样,我的网站正在使用jQuery.当我打开开发人员工具时,我看到一条警告说XMLHTTPRequest是
由于其对最终用户体验的不利影响而被弃用.
我继续阅读部分文档,但这是相当技术性的.有人可以用简单的术语解释从XMLHTTPRequest转换为WHATWG的后果吗?它说它发生在2012年.
此外,文档说工作人员之外的同步XMLHttpRequest正在从Web平台中删除,当发生这种情况时,如果用户代理在服务中拥有它们,他们是否需要修改现有代码?
我收到一条警告信息:
主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用.如需更多帮助,请访问http://xhr.spec.whatwg.org/.
当执行包含脚本(具有本地src)的异步AJAX请求时,使用$.html()方法将其注入HTML .我已经将给定的脚本更改为包含async="async",但警告消息仍然存在.
我已经开始调试这个问题,发现我的附加<script>是通过来自jQuery.ajaxTransport(http://code.jquery.com/jquery-1.10.0.js,#8663)的jquery AJAX调用来处理的,其中async设置为false(这可能是问题来自).
现在 - 我该怎么办呢?
该消息显示在最新版本的Chrome和Firefox中.
虽然我无法在jsfiddle上提供测试用例,但这是一个显示问题的测试用例:
的test.html
<html>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.js"></script>
<script>
$(document).ready(function(){
$.ajax({
url: '/response.html',
success: function(response){
$(document.body).html(response);
}
})
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
response.html
<script type="text/javascript" src="/json.js" async="async"></script>
Run Code Online (Sandbox Code Playgroud)
json.js
console.log('hi');
Run Code Online (Sandbox Code Playgroud)
触发警告不需要AJAX请求 - 只需要插入一个 <script>
test2.html
<html>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.js"></script>
<script>
$(document).ready(function(){
$(document.body).html('<script type="text/javascript" src="/json.js" async="async"><\/script>');
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
值得注意的是,这已经修复,按照https://github.com/jquery/jquery/issues/2060
我正在尝试向我的笔记本电脑本地托管的服务器发出POST ajax请求,但我似乎无法获得任何信息.当我单击我的站点上的一个按钮(localhost)时,我可以看到服务器传回正确的信息,但在前端我收到此错误:
错误:NetworkError:无法在'XMLHttpRequest'上执行'send':无法加载' http:// comp-ip '.
var param = JSON.stringify({varA:"varA",varB:"varB"});
$.ajax({
type: "POST",
url: "http://comp-ip",
async: false,
data: param,
success: function(result, status, xhr){
alert(result + ": " + status);
},
error: function(xhr, status, err) {
alert(status + ": " + err);
}
});
Run Code Online (Sandbox Code Playgroud)
它似乎每次都会引发错误,而不是"成功".任何人都知道出了什么问题?
编辑:我已经尝试在没有AJAX的情况下发送正常的POST请求,它也会引发"未定义"错误:
$(document).ready(function(){
var param = JSON.stringify({varA:"varA",varB:"varB"});
$("#btn").click(function(event){
$.post(
"http://ip",
param,
function(data) {
$('#container').html(data);
}
).fail(function(error) { alert(error.responseJSON) });
});
});
Run Code Online (Sandbox Code Playgroud)
我尝试过的其他事情:1)将浏览器更改为Safari(同样的事情,服务器返回信息但网站出错)2)从false设置async = true.出于某种原因,当我将其设置为true时,服务器根本不响应.当它为假时,服务器响应.
我知道这个问题在这里发布了很多次,但是我尝试了所有可以在堆栈溢出时找到的解决方案,但没有一个能够工作.我只是想做一个简单的ajax查询来加载div中的页面.就像这样简单:
function loadHome(){
$('#container').html('<div class="loader"></div>');
$.ajax({
type: "GET",
url: "home.php",
success: function(msg){
$("#container").html(msg);
}
});
}
Run Code Online (Sandbox Code Playgroud)
在控制台日志中,我得到了
主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用.如需更多帮助,请查看http://xhr.spec.whatwg.org/
除非我重新加载页面,否则主页上的一些javascript将无法运行.该页面默认已加载home.phpdiv内部,但我希望它加载其他页面然后当我点击"home"时它应该正常加载,并且由于该错误而没有发生.我已经尝试使用"async:true",但没有用.我不知道该怎么办.
我正在尝试使用jquery load()函数在另一个页面中加载页面.以下是代码:
... head code
</head>
<body id="body">
<div id="newbody"></div>
<button id="loadit">loadpage</button>
<script type="text/javascript">
$("#loadit").click(function(){
$( "#newbody" ).load( "edit.php?id=112" );
});
</script>
Run Code Online (Sandbox Code Playgroud)
当我单击按钮时,整个页面被清除,只显示"edit.php"页面的一个位.单个位我的意思是edit.php应该显示一个预先填充的表单,只显示一个没有CSS的单个字段.是因为我使用了错误的jQuery函数,即load().我想要做的是在当前页面的div标签中加载新页面.
我还在控制台中收到以下警告:
jquery.min.js:4主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用.
我哪里错了?
我在尝试Ajax请求的项目中收到错误
[Deprecation]主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用.
function getReviews() {
var toReturn = $.ajax({
url: 'API/reviews.json',
async: false
}).responseJSON;
return toReturn;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有不同的方法来写这个没有错误
我正在使用signalr2.2 Web应用程序并托管在IIS-8中.在这里,我尝试使用ARR3.0为我的应用程序实现负载平衡.在我的服务器场中,我连接了两台服务器,并将路由规则设置为"加权循环".每个服务器都有一个带HTML页面的javascript客户端.当我访问任何服务器的HTML页面时,请求已按预期路由,但我在我的html页面中出现此错误并且signalr未连接
WebSocket连接到 'WS://mydomain.com/signalr/connect运输=&的WebSockets clientProtocol = 1.5&connectionToken = x9rAfatyMm3TbqzrYKL1K37Z4tKrUTH7bwNmSItW55Z0ms6pe43YiQGFOmaHMyT%2BpmGz62ukt4tha72vPcJhdqLtIvsQvqvY15oYGv69JjzSuuiSL7v2l%2FccZT6tQa3Z&connectionData =%5B%7B%22name%22%3A%22chathub%22%7D%5D&TID = 1'失败:WebSocket握手期间出错:意外响应代码:400
如果我在我的serverfarm中使这个服务器的任何一个脱机,signalr工作正常,不会抛出任何错误.帮我找到解决方案.
如果我从我的.net客户端应用程序通信信号服务器,它将抛出以下错误
启动请求期间出错.停止连接.
如果我没猜错的话,“AJAX”中的“A”意味着异步发送 HTTP 请求,而不等待 HTTP 响应。
我了解到我们可以通过 发送异步 HTTP 请求XMLHttpRequest,例如:
function handleButtonPress(e) {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = handleResponse;
httpRequest.open("GET", e.target.innerHTML + ".html");
httpRequest.send();
}
Run Code Online (Sandbox Code Playgroud)
我们怎样才能同步发送HTTP请求呢?
我看到这个错误:“[Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated 因为它对最终用户的体验有不利影响。有关更多帮助,请查看https://xhr.spec.whatwg.org/。”,在此代码:
var request;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
}else{
request = new ActiveXObject("Microsoft.XMLHTTP");
}
request.open('GET', 'http://www.mywebsite.com', false);
request.send();
Run Code Online (Sandbox Code Playgroud)
我应该用什么替换指令,因为它们已被弃用?