簡體   English   中英

瀏覽器為什么不呈現控制器的響應?

[英]Why doesn't the browser render a response from the controller?

對控制器進行POST時,控制器將以我希望瀏覽器呈現的內容完全響應。 但是瀏覽器不會呈現響應。 我已經驗證了Fiddler的響應良好。

下面的代碼顯示了我認為是相關的代碼。 返回響應的控制器操作方法,該模板是具有mvc幫助程序代碼的模板的一部分,該javascript / jquery代碼使用表單輸入觸發ajax調用。

我想使用FormCollection。 瀏覽器為什么不呈現響應,我應該怎么做才能解決它?

BoMController

public ActionResult GetBillOfMaterialsView(FormCollection frmColl){
    // snipped out model interaction
    return PartialView("~/Views/Project/Index.cshtml", project);
}

Index.cshtml

@using (Html.BeginForm("GetBillOfMaterialsView", "BoM", FormMethod.Post, new {id = "frmGetBom"})) { 
     // selProj input select code removed for brevity 
}

    function submitGetBoM() {
        var frmGetBom = $('#frmGetBom');
        $.ajax({
            type: 'POST',
            url: frmGetBom.attr('action'),
            data: frmGetBom.serialize()
        });
    }

    $(document).ready(function() {
        $('#selProj').selectmenu( {
            select: function(){submitGetBoM()}
        }).addClass("overflow");
    });

單獨調用$.ajax並不能將服務器的響應追加到文檔中,您必須使用success回調函數來手動獲取並追加響應。

例如:

$.ajax({
    type: 'POST',
    url: frmGetBom.attr('action'),
    data: frmGetBom.serialize(),
    success: function(response) {
         $('#someContainerId').html(response);
    }
});

或者,使用上述的簡寫形式的load()

$('#someContainerId').load(frmGetBom.attr('action'), frmGetBom.serializeArray());

請參閱說明文件

您的客戶端代碼對服務器返回的值不做任何事情:

function submitGetBoM() {
    var frmGetBom = $('#frmGetBom');
    $.ajax({
        type: 'POST',
        url: frmGetBom.attr('action'),
        data: frmGetBom.serialize(),
        success: function() { alert('ok'); }
    });
}

這將彈出有關成功的警報。

暫無
暫無

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

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