jQuery AJAX call not working in Webkit

Posted by Brian on Stack Overflow See other posts from Stack Overflow or by Brian
Published on 2010-05-04T17:17:32Z Indexed on 2010/05/04 17:18 UTC
Read the original article Hit count: 493

Filed under:
|
|
|
|

I've run into a strange issue with Webkit based browsers (both Safari and Chrome - I'm testing on a Mac) and I am not sure what is causing it. Here's a small script I've created that replicates the issue:

<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 is:

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

This works as is on Firefox, but the XMLHTTPRequest status is always "0" on both Safari and Chrome. If I remove this line:

document.test.submit();

then it works, but of course the form is not submitted. I've tried changing the form submit button from "button" to "submit", but that also prevents it from working on Safari or Chrome.

What I am trying to accomplish is:

  • submit the form
  • call another script to get status on the file being uploaded via the form (it's for a small upload progress meter).

Any help is really appreciated - I'm hopeful it is just a quirk I'm not familiar with.

Thanks!

  • Brian

© Stack Overflow or respective owner

Related posts about jQuery

Related posts about AJAX