2016-12-19 71 views
0

我在我的HTML頁面上有一個表單,其中有一些要填寫的字段和一個上傳文件的選項。
我的Javascript函數將輸入轉換爲一個json文件。我試圖推動與用戶的web服務上傳的文件沿着這產生JSON,但我得到它說如何使用Ajax將JSON推送到web服務

405 OPTIONS

這裏是Ajax的功能,我寫了一個錯誤。 formData.serializeObject()函數爲我提供了表單的Json輸出。

$(function() { 
$('form').submit(function() { 
($('#file')[0].files[0].name); 

      var formData = new FormData($("form")[0]); 
      formData.append("filename", $('#file')[0].files[0].name); 
      var obj = new FormData(); 
      form = form 
      $.ajax({ 
       url: "Webserviceurl:port/function_to_send_json", 
       type: "POST", 
       data: JSON.stringify(formData.serializeObject()), 
       dataType: "json", 
       contentType: "application/x-www-form-urlencoded;charset=UTF-8", 
       success: function(data) { 
        $.ajax({ 
         url: "Webserviceurl:port/function_to_send_file", 
         type: "POST", 
         data: obj, 
         contentType: false, 
         success: function(data) { 

         }, 
         error: function(data) { 
          console.log("Error Happened"); 
         } 
        }); 
        return false; 
       }, 
       error: function(data) { 
        console.log("Error Happened"); 
       } 
      }); 
     }) 
    }); 

我在這裏做錯了什麼?

+0

請問您可以添加完整的錯誤信息嗎? – Mairaj

+0

@Leopard這是錯誤我跟隨我的function_to_send_file名稱 –

+0

您的'contentType'('application/x-www-form-urlencoded')與實際發送的數據不匹配(JSON) – hindmost

回答

0

正在報告錯誤消息,因爲您正在製作preflighted request。這意味着瀏覽器正在發送一個OPTIONS請求,要求獲得POST請求的許可。

服務器響應OPTIONS請求時出現405錯誤,意思是「您無法向此URL發出OPTIONS請求!」


也就是說......

data: JSON.stringify(…), 

如果您發送的JSON,那麼你應該說你要發送JSON,這公頃application/json內容類型,而不是:

contentType: "application/x-www-form-urlencoded;charset=UTF-8", 

formData對象沒有serializeObject方法,所以formData.serializeObject()應該拋出一個異常。


This question covers how to upload files with Ajax

+0

我寫了自己的函數將數據轉換爲JSON格式及其工作。這裏沒有錯誤。我甚至將內容類型更改爲JSON,並將我的網站和我的web服務託管在同一個Tomcat服務器上,但我仍然收到完全相同的錯誤。 –

相關問題