2017-02-09 195 views
1

在我的代碼中,當用戶按下提交按鈕時,它會向控制器執行一個AJAX請求。如何在Ajax.BeginForm完成後獲取完整的AJAX URL請求?

這一切都很好,但是,我也想更新瀏覽器URL以包含完整的查詢字符串(例如http://localhost/Forecast?BillingToes=123&Year=2016)。

控制器正在使用模型返回部分視圖。用查詢字符串添加一個包含完整URL的附加屬性似乎沒問題。但是,這看起來很尷尬。

所以我的問題是,有沒有辦法在OnComplete之後通過JavaScript檢索完整的URL?下面是我的看法:

@using (Ajax.BeginForm("UpdateForecast", null, new AjaxOptions 
{ 
    HttpMethod = "Post", 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "forecastControlPart", 
    LoadingElementId = "ajaxSpinnerImage", 
    OnBegin = "DeactivateForm", 
    OnSuccess = "initAppendHeader();UpdateURL(xhr)", 
    OnComplete = "ReloadFiltersBehaviour" 
}, new 
{ 
    @class = "onChangeForm", 
    data_currencyurl = @Url.Action("GetCurrencyForBilling", "DataSource"), 
})) 

回答

0

我找到了解決我的問題,使用$(形式).serialize()可以獲取表單提交到服務器的所有參數,所以我的代碼看起來像:

在我看來:

@using (Ajax.BeginForm("UpdateForecast", null, new AjaxOptions { 
HttpMethod = "POST", 
InsertionMode = InsertionMode.Replace, 
OnSuccess = "initAppendHeader(),UpdateURL(this)", 
})) 

在我的JavaScript文件:

function UpdateURL(form) { 
// Auto-Update browser URL to include parameters after submit. 
var formData = $(form).serialize(); 
window.history.pushState(null, null, formData); 
}