Javascript Ajax MVC部分返回正确响应,但仍会触发错误处理程序
这完全把我难住了。真奇怪 我定义了这个Ajax函数:Javascript Ajax MVC部分返回正确响应,但仍会触发错误处理程序,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,这完全把我难住了。真奇怪 我定义了这个Ajax函数: $.ajax({ type: 'GET', dataType: 'text/HTML', url: getLicenseeDetailsUrl, success: function (response) { $('#licenseeDetails').html(''); $('#licenseeDetails').html(response); }, error:
$.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);
}
public ActionResult加载LicenseDetails(长LicenseId)
{
var模型=新的Licensedetailsviewmodel();
var licensesee=\u licensingRepository.LoadById(licenseed);
var licenses=\u licensingRepository.LoadLicenses(licenseed);
model.Licencee=Mapper.Map(licencesee);
model.licenses=Mapper.Map(许可证);
返回此.PartialView(“\u LicenseeDetails”,model);
}
这一切看起来都像预期的那样工作,没有任何错误,但是它最终启动了Ajax错误函数,而不是success函数
查看xhr.responseText
我可以从操作控制器中看到正确的响应信息
所有状态均为200 OK。我到底做错了什么
我到底做错了什么
这:
应成为:
dataType: 'html'
引用数据类型
参数的
数据类型(默认值:智能猜测(xml、json、脚本或html))
类型:字符串
您希望从服务器返回的数据类型
服务器。如果未指定,jQuery将根据
响应的MIME类型(在1.4中,XML MIME类型将生成XML)
JSON将生成一个JavaScript对象,在1.4中,脚本将执行
脚本,其他任何内容都将作为字符串返回)。可用的
类型(以及作为成功的第一个参数传递的结果)
(a)是:
“xml”:返回可通过jQuery处理的xml文档
“html”:以纯文本形式返回html;包含的脚本标记是
在插入DOM时进行计算
“script”:以JavaScript形式计算响应,并以纯文本形式返回。通过以下方式禁用缓存:
将查询字符串参数“=[TIMESTAMP]”附加到URL,除非
缓存选项设置为true注意:这将把帖子变成GET
用于远程域请求
“json”:将响应计算为json并返回一个JavaScript对象。JSON数据被严格解析;任何格式错误的JSON都将被拒绝,并引发解析错误。从jQuery1.9开始,空响应也被拒绝;服务器应该
返回null或{}的响应。(有关正确json格式的更多信息,请参见json.org。)
“jsonp”:使用jsonp加载JSON块。在URL末尾添加一个额外的“?callback=?”以指定回调。除非缓存选项设置为true,否则通过向URL追加查询字符串参数“=[TIMESTAMP]”来禁用缓存
“文本”:纯文本字符串
多个空格分隔的值:从jQuery1.5开始,jQuery可以将一个数据类型从内容类型头中接收的数据类型转换为您需要的数据类型。例如,如果希望将文本响应视为XML,请使用“文本XML”作为数据类型。您还可以发出JSONP请求,将其作为文本接收,并由jQuery将其解释为XML:“JSONP文本XML”。类似地,“JSONP XML”等速记字符串将首先尝试从JSONP转换为XML,如果失败,则从JSONP转换为文本,然后从文本转换为XML
或者更好的是,简单地去掉这个参数。jQuery足够智能,可以使用服务器设置的内容类型
响应HTTP头来推断正确的类型并处理传递给成功
回调的参数
查看浏览器中javascript调试工具栏的
控制台选项卡。它将为您提供有关错误的更多信息。好的,我今天就辞职,我现在犯了太多基本的错误。谢谢Darin,谢谢@Darin,你救了我一天。
dataType: 'html'