Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下载失败,浏览器自动发出复制GET_Javascript_Android_Html_Ajax_Event Propagation - Fatal编程技术网

Javascript 下载失败,浏览器自动发出复制GET

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

下面的ajax GET代码在Chrome桌面浏览器和Android上的Firefox/Opera浏览器上运行良好。但在Android Chrome浏览器上,当Tomcat Java Servlet响应文件下载时,DL失败,浏览器似乎自动发出第二个GET,我的服务器代码再次下载,它成功了。这一点在Android Chrome上是一致的。(客户机中没有GET嵌套,因此无法真正进入DOM堆栈等)。就像我说的,DL适用于其他移动浏览器的first GET-in。请给我拿几张票。提前谢谢

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问题