parserrror SyntaxError: Unexpected token < - 在 ASP.NET MVC 4 中使用 jQuery Ajax 加载部分视图

Posted

技术标签:

【中文标题】parserrror SyntaxError: Unexpected token < - 在 ASP.NET MVC 4 中使用 jQuery Ajax 加载部分视图【英文标题】:parserrror SyntaxError: Unexpected token < - Load Partial View using jQuery Ajax in ASP.NET MVC 4 【发布时间】:2013-09-23 19:56:43 【问题描述】:

我正在使用以下 Ajax 调用将部分视图加载到 div 中:

  $.ajax(
    url: "/URL",
    type: "POST",
    dataType: "json",
    data: JSON.stringify(request),
    contentType: "application/json; charset=utf-8",
    success: function(data) 
        $('#Result').html(data);
        App.hidePleaseWait();
    ,
    error: function (jqXHR, textStatus, errorThrown) 
        App.hidePleaseWait();
        alert(textStatus);
        alert(errorThrown);
    
);

这是我的控制器:

[HttpPost]
        public ActionResult GetSomething(MyModel formModel)
        
            var model = new ResultModel();

            try
            
                model.Data = GetSomeData();
            
            catch (Exception exception)
            
                model.ErrorMessage = exception.Message;
            

            return PartialView("_Results", model);
        

我收到以下错误"parserrror SyntaxError: Unexpected token &lt;"

似乎 .ajax 调用期望返回 json 而不是 html。我需要做什么来解决这个问题?

谢谢。

【问题讨论】:

该错误意味着您正在请求 json,但服务器正在返回 HTML。要么让服务器返回 JSON,要么让 ajax 期望文本或 html。 【参考方案1】:

您需要在 ajax 调用中更改数据类型。

 dataType: "json",

 dataType: "html", 

Datatype 告诉 type 是 json,但你发回的部分视图是 html。所以它会尝试将其解析为 json 数据并抛出错误。

datatype - 您希望从服务器返回的数据类型。

dataType(默认:智能猜测(xml、json、script 或 html)) 类型:字符串 您期望从服务器返回的数据类型。如果没有指定,jQuery 将尝试根据响应的 MIME 类型推断它(XML MIME 类型将产生 XML,在 1.4 中 JSON 将产生 javascript 对象,在 1.4 中脚本将执行脚本,其他任何内容都将是作为字符串返回)。可用的类型(以及作为第一个参数传递给成功回调的结果)是:

【讨论】:

我不得不将其更改为文本而不是文本/html。它抛出了没有从文本转换为文本/html的错误。谢谢! @Mike 改成html 谢谢...我有一个问题作为对此的扩展 - ***.com/questions/24175081/…【参考方案2】:

您现在知道添加 dataType to html 而不是 json。我还在 jquery 的 ajax 函数的成功/完成部分检查以下内容:

success: function (response, status, xhr) 
  var ct = xhr.getResponseHeader("content-type") || "";
  if (ct.indexOf('html') > -1) 
    // returned result is of type html, so act accordingly
    
  else if (ct.indexOf('json') > -1) 
    // returned result is of type json, so act accordingly
  

此外,有时您可能需要将从服务器收到的数据解析为 html,如下所示:

var htmldata = $.parseHTML(data); //where data is the stuff you got from server. and now use this htmldata for your processing.

Reference for parseHTML()

【讨论】:

@Mike 如果您的控制器返回带有验证消息的视图,即 html 或 json,如果一切顺利,我提到的上述内容可以帮助您。

以上是关于parserrror SyntaxError: Unexpected token < - 在 ASP.NET MVC 4 中使用 jQuery Ajax 加载部分视图的主要内容,如果未能解决你的问题,请参考以下文章

渲染中的 Laravel + Vue 错误:“SyntaxError:JSON 中位置 0 的意外标记 u”

渲染中的 Laravel + Vue 错误:“SyntaxError:JSON 中位置 0 的意外标记 u”

如何使用 unicode 从 python 服务解析 JSON? SyntaxError: Unexpected token u

Python报错:SyntaxError: invalid character ‘,‘ (U+FF0C)

未捕获的 SyntaxError:JS 和 CSS 文件中的非法字符 U+001F

js、javascript : Uncaught SyntaxError: Unexpected token u