我有一個模式窗口的視圖,您可以拖動圖像進行上傳。單擊模式窗口上的保存按鈕後,我將圖像發佈到控制器的UploadImage操作中,隱藏模式,然後再次調用get動作以重新加載包含上傳圖像列表的PartialView。Jquery無法執行控制器操作並刷新局部視圖
我的圖片上傳正常,但部分操作從未被擊中。
我對Jquery沒有太多的經驗,所以我不確定自己做錯了什麼。
這是我的看法的相關部分:
<div id="viewSavedContentAreaDiv">
@Html.Action("PartImagesPartial", "Part", new { PartID = Model.ID })
</div>
這是我的控制器的相關部分:
public ActionResult PartImagesPartial(int PartID)
{
IEnumerable<PartImageViewModel> images = _map.GetPartImages(PartID);
return PartialView("PartImagesPartial", images);
}
這是相關的Jquery在我的js文件:
$("#btnDroppedSave").click(function() {
var imgSource = $("#drop").find("img").attr("src");
if (imgSource == undefined)
$("#validateDroppedImage").show();
if (imgSource != undefined) {
var partId = $('#ID').val();
var formData = new FormData();
var totalFiles = 1;
var dropedFile = newFile;
formData.append("FileUpload", dropedFile);
formData.append("PartID", partId)
$.ajax({
type: "POST",
url: '/Part/UploadImage',
data: formData,
dataType: "html",
contentType: false,
processData: false,
});
$('#part-image-modal').modal('hide');
//this should refresh PartImagesPartial
$.ajax({
url: "/Part/PartImagesPartial",
type: "GET",
dataType: "html",
contentType: false,
data: { PartID: (partId) },
success: function (result) {
$("#viewSavedContentAreaDiv").empty().append(result);
}
});
}
});
單擊按鈕後,PartImagesPartial操作不會被點擊,但文件確實會上傳。如果我手動刷新包含視圖,那麼partial將顯示包含新圖像的圖像列表。任何想法,我在這裏搞砸了嗎?
請記住,「ajax」中的第一個「a」代表「異步」。你想在開始做其他事情之前等待第一個Ajax的返回。把它放在'.success'方法中。 http://api.jquery.com/jquery.ajax/ – nurdyguy
你釘了它,謝謝你的提醒!我沒有意識到第一個Ajax可能還沒有回來。通過成功方法中的部分ajax,一切都很好。謝謝。 如果你發佈這個答案我會接受它。 – Brad