这让我完全难住了。真奇怪
我定义了这个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<Licensee, LicenceeViewModel>(licencesee);
model.Licences = Mapper.Map<IEnumerable<License>, IEnumerable<LicenceViewModel>>(licenses);
return this.PartialView("_LicenseeDetails", model);
}
这一切似乎都按预期工作,没有任何错误,但是最终触发了Ajax错误函数,而不是成功函数。
看着,xhr.responseText
我可以看到来自动作控制器的正确响应信息!
所有状态也都为200 OK。我到底在这里做错了什么?
我到底在这里做错了什么?
这:
dataType: 'text/HTML'
应该变成:
dataType: 'html'
从报价documentation
中的dataType
参数:
dataType(默认值:Intelligent Guess(xml,json,脚本或html))
类型:字符串
您期望从服务器返回的数据类型。如果未指定,则jQuery将尝试根据响应的MIME类型来推断它(XML MIME类型将产生XML,在1.4中,JSON将产生JavaScript对象,在1.4脚本中,脚本将执行该脚本,而其他任何内容将是以字符串形式返回)。可用的类型(以及作为第一个参数传递给您的成功回调的结果)是:
“ xml”:返回可以通过jQuery处理的XML文档。
“ html”:以纯文本形式返回HTML;插入到DOM中时,将评估包含的脚本标签。
“脚本”:将响应评估为JavaScript并以纯文本形式返回。除非将高速缓存选项设置为true,否则通过在URL上附加查询字符串参数“ _ = [TIMESTAMP]”来禁用高速缓存。注意:对于远程域请求,这会将POST转换为GET。
“ json”:将响应评估为JSON并返回一个JavaScript对象。JSON数据以严格的方式进行解析;任何格式错误的JSON都会被拒绝,并引发解析错误。从jQuery 1.9开始,空响应也被拒绝;服务器应返回null或{}的响应。(有关正确的JSON格式的更多信息,请参见json.org。)
“ jsonp”:使用JSONP加载JSON块。添加一个额外的“?callback =?” URL的末尾以指定回调。除非将高速缓存选项设置为true,否则通过在URL上附加查询字符串参数“ _ = [TIMESTAMP]”来禁用高速缓存。
“文本”:纯文本字符串。
多个用空格分隔的值:从jQuery 1.5开始,jQuery可以将dataType从在Content-Type标头中接收的dataType转换为您所需的dataType。例如,如果要将文本响应视为XML,请对数据类型使用“文本xml”。您还可以发出JSONP请求,将其接收为文本,并由jQuery解释为XML:“ jsonp text xml”。同样,速记字符串(例如“ jsonp xml”)将首先尝试从jsonp转换为xml,如果失败,则尝试从jsonp转换为文本,然后再从文本转换为xml。
甚至更好,只需摆脱该参数即可。jQuery足够智能,可以使用Content-Type
服务器设置的响应HTTP标头,以便推断正确的类型并处理传递给success
回调的参数。
Console
在浏览器中查看javascript调试工具栏的标签。它将为您提供有关该错误的更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句