2015-04-01 22 views
0

我想通過一個jQuery ajax傳入一個輸入文件字段,並且在我的Chrome檢查器控制檯中得到一個匿名函數,它說這是因爲我的腳本中有一行: $阿賈克斯({當試圖傳遞表單數據時,jquery ajax匿名函數

繼承人我運行後我的代碼我

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 

$("#sendCoverImageForm").click(function(e){ 
      e.preventDefault() 
      var mForm = $("#sendFormOne").serialize() 
      $.ajax({ 
       type: "POST", 
       url: "{% url 'ajax_coverimage' %}", 
       data: mForm, 
       success: function(data){ 
       console.log(data) 
       $("#CoverImageModal").modal("hide"); 
       }, 
       error: function(data){ 
       var obj = data.responseJSON 
       $("#modalMessage").html("<p style='color:red;'>" + obj + "</p>") 
       }, 
      }); 
     }); 

如果我跑前

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 

在腳本控制檯我得到 Uncaught ReferenceError:$未定義 - 與腳本的頂行有關。然後運行該腳本並運行,並將該文件放入我的模型中,但頁面在DOM中呈現「成功<filename>」,而不是控制檯。

我是jquery的noob,所以任何幫助都會很樂意接受!

+0

在控制檯中它說'POST http://127.0.0.1:8000/ajax/cover_image/ 400(BAD REQUEST)jquery.min.js:4 n.ajaxTransport.k.cors.a.crossDomain.sendjquery。 min.js:4 n.extend.ajax(index):579(匿名函數)jquery.min.js:3 n.event.dispatchjquery.min.js:3 n.event.add.r.handle' – UK2AU 2015-04-01 12:27:18

+0

你可以'上傳帶有.serialize()數據的文件你必須使用FormData對象。 – Musa 2015-04-01 14:47:36

回答

0

$()相當於jQuery對象jQuery(),這兩種情況下都會處理jQuery函數作用域中括號之間的語句。
這解釋了爲什麼腳本在包含jQuery src之前會引發Uncaught ReferenceError,因爲$符號尚未定義。

正如musa所說,你應該使用FormData對象,但是你應該記住,在IE中它只支持IE10 +,你可以使用一個插件來支持舊版瀏覽器,支持它們對於剛開始使用JavaScript的人來說是不愉快的,但你應該學會如何做到這一點,例如參見filedropjs

這裏是使用FormData的tutorial(不介意PHP)。
希望這有助於!

+1

'你發送的數據應該是JSON格式。「你從哪裏得到的? – Musa 2015-04-01 14:48:50

+0

我想這有點誤導,我會改變這一點。 – HassenPy 2015-04-01 15:59:00

相關問題