2016-08-11 83 views
-1

我編寫了一個上傳文件的AJAX請求,並將它的詳細信息添加到MySql數據庫(通過表單)。preventDefault()打破了外部PHP的AJAX請求

該代碼工作的很好,但是當我向提交事件添加preventDefault()(不被定向到外部PHP文件)時會中斷。

$("#upload-form").submit(function(event){ 

      // TODO: check why breaks PHP code 
      // event.preventDefault(); 

相同的結構與同一文件(編輯MySql數據庫例如AJAX請求)等AJAX請求的偉大工程。

我知道AJAX請求已提交,因爲在我的服務器上創建了一個新文件夾(作爲PHP代碼的一部分),但文件未上傳。

我會很樂意爲這些問題一個答案:

  1. 什麼的preventDefault()能源部的能干擾其他處理AJAX請求?
  2. 如何調試外部PHP代碼?因爲我沒有指向它(因爲preventDefault())?

如果我的問題不夠清楚 - 請幫我說清楚。

+0

你想用ajax上傳文件嗎? 'event.preventDefault()'會停止提交表單,所以我猜你正在用ajax發送表單數據。 – Ozan

+0

我們需要看到更多的代碼。如果'preventDefault()'應該停止你的ajax請求,你應該如何查看它們? – FrankerZ

+0

你可以設置窗體的目標名稱爲隱藏的iframe嗎?我相信有多少其他網站已經完成了異步文件上傳(例如gmail) –

回答

-1

既然你打電話event.preventDefault()我假設你發送表單數據與Ajax。

如果你想上傳帶有ajax的文件,你需要在你的ajax請求上設置processData: falsecontentType: false

參見jQuery Ajax File Upload

+0

所以我使用這種方法:http://www.w3schools.com/php/php_file_upload.asp。這意味着我使用$ _FILES變量來檢索文件 - 在服務器端,而不是客戶端的.files方法。它有效嗎?它的工作原理沒有preventDefault(),我可以調整它以使用它嗎? –

+0

客戶端文件和服務器端$ _FILES是兩個完全不同的東西。如果您在Ajax方面正確上載文件,您將可以像在正常表單提交中一樣從服務器端訪問它們。 – Ozan