簡體   English   中英

將數據從ajax發送到控制器操作

[英]Sending data from ajax to controller action

我創建一個ajax請求,在其中使用FormData添加圖像。 看起來:

function handleForm(e) {
    var data = new FormData();
    for(var i=0, len=storedFiles.length; i<len; i++) {
        data.append('files['+i+']', storedFiles[i]);
    }
   $.ajax({
       url:'site/images',
       type:'POST',
       processData: false,
       contentType:false,
       data:data,
       success: function (response) {
           console.log(response);
       }
   })
}

和何時處理

 $("#myForm").on("submit", handleForm);

myForm是我所有表單的ID。 該表單轉到操作站點/表單,但是對於ajax請求,我創建了可以獲取圖像的站點/圖像操作。 我想在發送表單時同時發送它們。 但是問題是,當我嘗試將圖像放入站點/表單動作時,我需要將其放進去,因為站點/表單處理不同的邏輯(將form_id從Form模型保存到Images模型,將該圖像附加到郵件等)。 我該如何解決? 我知道如何在表單將請求發送到一個動作時獲取圖像,我當然可以從具有model和model屬性的UploadedFile :: getInstances()獲取它們。 但是現在我沒有模特兒了。

嘗試這個

var storedFiles= $("#upload");
if (storedFiles.get(0) != undefined) {
            for (i = 0; i < storedFiles.get(0).files.length; i++) {
                data.append("files['+i+']", storedFiles.get(0).files[i]);
            }
        }

我不確定我的概念是否是您的意思..但是我認為您應該首先將動作站點/圖像中的圖像保存到圖像模型中,並使用特殊字段(臨時ID)將其保存,這對於動作和模型都是相同的(表單模型和圖像模型)。 呈現表單時應生成臨時ID。 然后,在成功保存圖像並成功保存表單模型之后,您應該將圖像模型中的臨時ID替換為與保存的表單模型相關的正確ID。 如果表單模型無效且無法保存,則應刪除帶有tmp ID的圖像模型並重復整個過程。

構造AJAX請求時,嘗試將multipart/form-data作為內容類型。

您所要求的有點錯誤,AJAX調用是非阻塞的,您可以同時發送它們,但是如果您的site/form依賴於site/image ,則您不知道哪一個在服務器上會變得更快,然后將數據提交到site/image首先,應用自定義邏輯之后(在服務器和如上被上載的圖像),並且執行成功,提交意味着用於數據site/formsuccess ,否則,吐錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM