从视图中的javascript调用MVC控制器操作

从视图中的javascript调用MVC控制器操作,javascript,jquery,asp.net-mvc,json,Javascript,Jquery,Asp.net Mvc,Json,我有这样的情况:在MVC视图javascript函数中,我调用控制器操作并获取一些xml数据字符串,然后调用另一个控制器操作,在其中创建新对象并调用新视图。我总是收到错误消息: 请求未定义时出错: text状态:parsererror ErrorRown:SyntaxError:JSON解析:JSON数据的第1行第1列出现意外字符 我不知道为什么会这样。如果我直接调用第二个控制器操作,并在其中使用硬编码xml,我将得到正确的结果-新视图。如何从视图中的javascript函数调用控制器操作而不刷

我有这样的情况:在MVC视图javascript函数中,我调用控制器操作并获取一些xml数据字符串,然后调用另一个控制器操作,在其中创建新对象并调用新视图。我总是收到错误消息: 请求未定义时出错: text状态:parsererror ErrorRown: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::CompleteFrameBrandDetailsstring项

     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
            }
        };
    }
PacModuleControl::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的包装器,在这种情况下,将数据类型设置为xml应该会有所帮助。如果不明确设置数据类型,jQuery将做出最佳猜测,它似乎认为您正在返回json


您也可能在某个地方为json设置了默认值。

您确定第一个请求是XML吗?它看起来更像JSON。错误到底在哪里抛出?为第二个请求构造数据时?何时发送第二个请求?当收到第二个请求的响应时?反应如何?它看起来像一个视图,您打算如何处理响应?当前,您的成功处理程序不执行任何操作。在第一个请求中,我获取字符串,并在第二个请求中将该字符串作为参数转发,但在本例中,我不需要任何响应,因为我希望显示其他视图。在第二个请求时抛出错误,我认为是响应,但我不知道如何在没有ajax的情况下调用控制器操作。在第二个请求中,您返回的是ViewResult,而不是像第一个请求那样返回JSONResult。这是什么玻璃景观?我猜它不是JSON或XML。你是对的。在玻璃视图中,我不返回任何东西。我不认为我可以称之为“模型”的可视玻璃;独立并返回一些伪JSONResult。我试试看。谢谢你的提示。这个不行。我需要的是在不使用Ajax的情况下从javascript函数调用控制器操作。我该怎么做?window.location=url直接进入视图,但我需要调用控制器操作。