Javascript 下载失败,浏览器自动发出复制GET
下面的ajax GET代码在Chrome桌面浏览器和Android上的Firefox/Opera浏览器上运行良好。但在Android Chrome浏览器上,当Tomcat Java Servlet响应文件下载时,DL失败,浏览器似乎自动发出第二个GET,我的服务器代码再次下载,它成功了。这一点在Android Chrome上是一致的。(客户机中没有GET嵌套,因此无法真正进入DOM堆栈等)。就像我说的,DL适用于其他移动浏览器的first GET-in。请给我拿几张票。提前谢谢Javascript 下载失败,浏览器自动发出复制GET,javascript,android,html,ajax,event-propagation,Javascript,Android,Html,Ajax,Event Propagation,下面的ajax GET代码在Chrome桌面浏览器和Android上的Firefox/Opera浏览器上运行良好。但在Android Chrome浏览器上,当Tomcat Java Servlet响应文件下载时,DL失败,浏览器似乎自动发出第二个GET,我的服务器代码再次下载,它成功了。这一点在Android Chrome上是一致的。(客户机中没有GET嵌套,因此无法真正进入DOM堆栈等)。就像我说的,DL适用于其他移动浏览器的first GET-in。请给我拿几张票。提前谢谢 HTML &l
HTML
<form action="Tokens" method="GET" id="TokenSubmit" >
<input type="text" name="BToken" id="tokenboxid">
</form>
JAVASCRIPT
$('#TokenSubmit').on('submit', function(e) {
cancelBubble(e);
var tmpurl="/Strap/Tokens?BToken=" + $("#tokenboxid").val();
$.ajax({url: tmpurl});
e.preventDefault();
SetName();
return ;
}
function cancelBubble(e) {
var evt = e ? e:window.event;
if (evt.stopPropagation) evt.stopPropagation();
if (evt.cancelBubble!=null) evt.cancelBubble = true;
}
SERVLET JAVA CODE in doGet()
while ((bytesRead = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
};
outStream.close();
HTML
JAVASCRIPT
$('#TokenSubmit')。关于('submit',函数(e){
取消气泡(e);
var tmpurl=“/Strap/Tokens?BToken=“+$(“#tokenboxid”).val();
$.ajax({url:tmpurl});
e、 预防默认值();
SetName();
返回;
}
函数(e){
var evt=e?e:window.event;
if(evt.stopPropagation)evt.stopPropagation();
如果(evt.cancelBubble!=null)evt.cancelBubble=true;
}
doGet()中的SERVLET JAVA代码
而((字节读取=流内读取(缓冲区))!=-1){
超流写入(缓冲区,0,字节读取);
};
exptream.close();
旁注:您似乎在使用jQuery,这使得您的cancelBubble
功能完全没有必要。jQuery提供给您的事件对象具有跨浏览器、可靠的stopPropagation。谢谢。TH Crowder。我从论坛上找到了cancelBubble()片段,提醒您不要使用stopPropagation()不是所有浏览器都支持。旧IE没有,但jQuery可以为您处理。很高兴知道。再次感谢。一个建议是,找出问题是由于javascript/ajax请求还是由于浏览器处理响应造成的。一种方法是在(a href标记)中放一个普通url如果这不起作用,调试就会更容易——可能是响应头(conent类型等)的问题。如果这起作用,那就是javascript/ajax问题