我有这样的情况:在MVC View javascript函数中我调用控制器动作并获取一些xml数据字符串,然后我调用另一个控制器动作,我在其中创建新对象并调用新视图。我总是收到错误消息: 请求时出错"未定义" : TextStatus:" parsererror" ErrorThrown:" SyntaxError:JSON解析:JSON数据第1行第1列的意外字符"
我不知道为什么会这样。如果我直接用硬编码的xml调用第二个控制器动作,我得到正确的结果 - 新视图。如何在不刷新视图的情况下从javascript函数调用控制器操作?
这是我的代码:
javascript函数查看CompleteFrameBrand:
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(string item)
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);
}
答案 0 :(得分:0)
我假设$.p
是jQuery $.ajax
的包装器,在这种情况下将dataType
设置为xml
应该会有所帮助。如果没有明确地设置dataType
,jQuery会做出最好的猜测,而且似乎认为你正在返回json
。
您也可以在json
的某处设置默认值。