繁体   English   中英

jQuery AJAX调用在Webkit中不起作用

[英]jQuery AJAX call not working in Webkit

基于Webkit的浏览器(Safari和Chrome)都遇到了一个奇怪的问题(我正在Mac上进行测试),我不确定是什么原因引起的。 这是我创建的一个小脚本,可用来复制问题:

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
function doRequest() {
  document.test.submit();
  $.ajax({
    type: "GET",
    cache: false,
    url: 'ajax.php?tmp=1',
    success: doSuccess
  });
}
function doSuccess(t_data,t_status,req) {
  alert('Data is: '+ t_data +', XMLHTTPRequest status is: '+ req.status);
}
</script>
</head>

<body>
<form name="test" method="post" action="ajax.html" enctype="multipart/form-data">
<input type="file" name="file_1">
<br><input type="button" value="upload" onclick="doRequest();">
</form>
</body>
</html>

ajax.php是:

<?php
echo $_REQUEST['tmp'];
?>

这与Firefox一样,但是Safari和Chrome上的XMLHTTPRequest状态始终为“ 0”。 如果我删除此行:

document.test.submit();

然后就可以了,但是当然不提交表格。 我尝试将表单提交按钮从“按钮”更改为“提交”,但这也阻止了它在Safari或Chrome上运行。

我想要完成的是:

  • 提交表格
  • 调用另一个脚本,以获取通过表单上传的文件的状态(用于小型上传进度表)。

非常感谢您的帮助-希望这只是我不熟悉的怪癖。

谢谢!

  • 布赖恩

简单地说:使用AJAX你不能上传文件。

有很好的插件,如jQuery的形式 ,它会自动处理这(通过创建一个隐藏的iframe和执行真正的文件上传)。

我认为Firefox有一个本地文件上传API ,但如果你想有一个跨浏览器的解决方案,你需要看看一些插件。 使用Flash上​​传是另一种解决方案。

我在开发类似的上传检查工具1时的经验是,您应该同时使用success: ..complete: .. 它们可能会在代码中执行完全相同的操作,并且您可以让它们调用相同的函数。 complete:在请求完成时被调用, success:在请求成功时被调用。 因此也许:

function doRequest() {
  document.test.submit();
  $.ajax({
    type: "GET",
    cache: false,
    url: 'ajax.php?tmp=1',
    complete: doSuccess,
    success: doSuccess
  });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM