2013-03-13 68 views
0

我想使用AJAX和HTML5处理从客户端计算机上的文件上传到服务器上的文件夹。代码从未执行,没有得到任何错误

现在下面的alert消息除了success函数永远不会执行,我不知道为什么。我没有收到任何JS错误。 php脚本和保存文件的文件夹都被授予完全的读/写权限。

我很难在没有看到任何错误的情况下使其工作。

我很感谢任何帮助确定这个问题的原因,并获得一些错误或至少警报消息执行。

非常感谢提前!

JQuery的

$.ajax({ 
     url: 'upload.php', //server script to process data 
     type: 'POST', 
     xhr: function() { // custom xhr 
      myXhr = $.ajaxSettings.xhr(); 
      if(myXhr.upload){ // check if upload property exists 
       myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload 
      } 
      return myXhr; 
     }, 
     //Ajax events 
     success: function(data){ 
      alert("OK"); 
      $('body').html(data); 
     }, 
     // Form data 
     data: formData, 
     //Options to tell JQuery not to process data or worry about content-type 
     cache: false, 
     contentType: false, 
     processData: false 

    }); 

HTML

<form enctype="multipart/form-data"> 
    <input name="file" type="file" /> 
    <input type="button" value="Upload" /> 
    </form> 
    <progress></progress> 

upload.php的

<?php 
if ($_FILES["file"]["name"] != NULL) { 
    if (file_exists("uploads/" . $_FILES["file"]["name"])) 
    echo $_FILES["file"]["name"] . " already exists. "; 
    else 
    move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]); 
} 


?> 
+0

稍微不相关,尝试使用关键字“调试器;”在Chrome浏览器旁边的JS文件中。当它击中关键字并让你看到发生了什么时,它会停止执行。否则在诊断XHR时,complete:function(){}钩子可能是另一个有用的点,因为总是调用complete。 – David 2013-03-13 00:39:50

+0

您没有错误处理程序。按照文档http://api.jquery.com/jQuery.ajax/中的描述创建一个'error:function(){}'错误回调并且始终在打开浏览器控制台的情况下开发JavaScript。观看XRH并在浏览器开发工具的网络部分检查其响应。 – 2013-03-13 00:39:56

+0

您是否尝试过使用开发人员工具进行调试? – j08691 2013-03-13 00:40:56

回答

1

添加错误处理为好。

$.ajax({ 
    success: function(data){ 
    console.log("OK"); 
    $('body').html(data); 
    }, 
    error: function(xhr, textStatus, errorThrown){ 
    console.log('An error has occurred!'); 
    console.log(textStatus); 
    console.log(errorThrown); 
    } 
}); 

JavaScript不会为失败的ajax请求抛出任何错误,所以你需要自己去捕捉它们。

+0

+1,感谢您的回复!我收到以下错误:'对象{readyState:0,getResponseHeader:函数,getAllResponseHeaders:函数,setRequestHeader:函数,overrideMimeType:函数...}',任何想法可能会导致此? – AnchovyLegend 2013-03-13 00:46:20

相关问题