Ajax MVC部分返回正确的响应然后触发错误处理程序

 独坤2602884605 发布于 2023-01-30 08:45

这让我完全难过.太奇怪了.

我定义了这个Ajax函数:

$.ajax({
    type: 'GET',
    dataType: 'text/HTML',
    url: getLicenseeDetailsUrl,
    success: function (response) {
        $('#licenseeDetails').html('');
        $('#licenseeDetails').html(response);
    },
    error: function (xhr) {
        alert('Failed to get licensee details');
    }
});

我让它调用我的控制器,它有一个动作,如:

public ActionResult LoadLicenseeDetails(long licenseeId)
{
    var model = new LicenseeDetailsViewModel();

    var licencesee = _licensingRepository.LoadById(licenseeId);
    var licenses = _licensingRepository.LoadLicenses(licenseeId);

    model.Licencee = Mapper.Map(licencesee);
    model.Licences = Mapper.Map, IEnumerable>(licenses);

    return this.PartialView("_LicenseeDetails", model);
}

这一切似乎都按预期工作,没有任何错误,但它最终会触发Ajax错误函数,而不是成功函数.

看着xhr.responseText我可以看到来自动作控制器的正确响应信息!

所有状态均为200 OK.我到底是做错了什么?

1 个回答
  • 我到底是做错了什么?

    这个:

    dataType: 'text/HTML'
    

    应成为:

    dataType: 'html'
    

    从报价documentation中的dataType参数:

    dataType(默认值:Intelligent Guess(xml,json,script或html))

    类型:字符串

    您期望从服务器返回的数据类型.如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西将是以字符串形式返回).可用的类型(以及作为成功回调的第一个参数传递的结果)是:

    "xml":返回可以通过jQuery处理的XML文档.

    "html":以纯文本形式返回HTML; 包含的脚本标记在插入DOM时进行评估.

    "script":将响应评估为JavaScript并将其作为纯文本返回.通过将查询字符串参数"_ = [TIMESTAMP]"附加到URL来禁用缓存,除非缓存选项设置为true.注意:这会将POST转换为GET以获取远程域请求.

    "json":将响应计算为JSON并返回JavaScript对象.JSON数据以严格的方式解析; 任何格式错误的JSON都会被拒绝,并抛出一个解析错误.从jQuery 1.9开始,空响应也被拒绝; 服务器应该返回null或{}的响应.(有关正确的JSON格式的更多信息,请参阅json.org.)

    "jsonp":使用JSONP加载JSON块.添加额外的"?callback =?" 到URL的末尾以指定回调.通过将查询字符串参数"_ = [TIMESTAMP]"附加到URL来禁用缓存,除非缓存选项设置为true.

    "text":纯文本字符串.

    多个空格分隔值:从jQuery 1.5开始,jQuery可以将dataType从Content-Type标头中收到的数据转换为您需要的数据类型.例如,如果要将文本响应视为XML,请对dataType使用"text xml".您还可以发出JSONP请求,将其作为文本接收,并由jQuery解释为XML:"jsonp text xml".类似地,诸如"jsonp xml"之类的速记字符串将首先尝试从jsonp转换为xml,如果失败,则从jsonp转换为text,然后从text转换为xml.

    甚至更好,只需摆脱这个参数.jQuery足够智能,可以使用Content-Type服务器设置的响应HTTP标头,以推断出正确的类型并处理传递给success回调的参数.

    查看Console浏览器中javascript调试工具栏的选项卡.它将为您提供有关错误的更多信息.

    2023-01-30 08:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有