[英]Call MVC Controller Action from a javascript in View
我有這種情況:在MVC視圖javascript函數中,我調用控制器操作並獲取一些xml數據字符串,然后調用另一個控制器操作,在該操作中創建新對象並調用新視圖。 我總是收到錯誤消息:請求“未定義”時出錯:TextStatus:“ parsererror” ErrorThrown:“ SyntaxError:JSON解析:JSON數據第1行第1列意外的字符”
我不知道為什么會這樣。 如果我直接用硬編碼的xml調用第二個控制器動作,那么我會得到正確的結果-新視圖。 如何在不刷新視圖的情況下從javascript函數調用控制器動作?
這是我的代碼:
視圖CompleteFrameBrand中的javascript函數:
function order(model) {
$.p({
url: '@Url.Action("CompleteFrameBrandDetails", "PacCompleteFrame")',
data: { item: model },
success: function (result) {
if (result.Success) {
$.p({
url: '@Url.Action("GlassCompleteFrame", "PacModule")',
data: JSON.stringify({ b2bXml: result.Data }),
success: function (result) {
return;
}
});
} else {
$.alert({
message: 'error while trying to load xml details'
});
}
}
});
CompleteFrameController :: CompleteFrameBrandDetails(字符串項目)
public ActionResult CompleteFrameBrandDetails(string item)
{
var customerNumber = _workContext.SelectedCustomerNumber;
var employeeId = _workContext.CurrentCustomer.Ll3Id;
string b2bxml = _completeFrameService.GetCFB2BXML(employeeId, customerNumber, item, _workContext.WorkingLanguage.LanguageCulture.Substring(3));
return new JsonResult()
{
Data = new
{
Success = true,
Data = b2bxml
}
};
}
PacModuleController :: GlassCompleteFrame:
public ActionResult GlassCompleteFrame(string b2bXml)
{
PacModuleModel model = new PacModuleModel();
model.CustomerNumber = _workContext.SelectedCustomerNumber;
model.Language = _workContext.WorkingLanguage.UniqueSeoCode;
model.Comission = "";
model.GlassXml = b2bXml.Replace("\"", "\\\"");
model.Price = Convert.ToDouble(p, System.Globalization.CultureInfo.InvariantCulture);
model.ReadOnly = false;
return View("Glass", model);
}
我假設$.p
是jQuery $.ajax
的包裝,在這種情況下,將dataType
設置為xml
應該會有所幫助。 如果沒有顯式設置dataType
jQuery將做出最佳猜測,並且似乎認為您正在返回json
。
您也可能在json
某個位置設置了默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.