操作结果在 ajax 调用中作为错误返回
ActionResult returns as an error in the ajax call
所以,我正在尝试从我的控制器返回一个xml
文件:
[HttpGet]
public ActionResult GetXml(int id)
{
var xmlBytes = _context.GetXml(id);
if (xmlBytes == null) return View("NotFound");
return File(new MemoryStream(xmlBytes), "application/xml", "file.xml");
}
这个Action
从这个ajax
调用中完美地调用:
$.ajax({
type: 'get',
url: url,
success: function(data) {
window.location = url;
},
error: function(error) { //error.responseText contains the actual xml string!
alert("failed to download xml");
}
});
但是,它不是调用success
,而是直接转到error
属性。一件有趣的事情是,error
对象的 responseText
属性包含我正在寻找的xml
。
有人可以解释我做错了什么,并指出我正确下载 xml 流的正确方向吗?
谢谢
这是状态为 200 且响应文本具有输出的经典问题,但这是一个错误。看起来很奇怪,但这是有原因的。
如果你要看响应XML,你不会看到xml文档,因为由于某种原因,浏览器无法解析它。现在,jQuery自动检测内容类型并看到它是XML,它将响应XML视为空并将其抛入错误状态。如果记录参数,您将看到错误消息。
现在要调试它,您可以从控制台复制响应文本或从网络面板检查响应。把它放到你最喜欢的XML验证器中,看看它是否拾取了错误。常见问题是服务器在响应中插入隐藏字符,这会阻塞解析器或服务器在 xml 文档之前返回垃圾。
相关文章:
- CKFinder 3为所选文件返回错误的URL
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 用于查询错误转换的角度资源返回列表
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- WebView返回错误的window.innerHeight
- Javascript表单验证:表单在错误返回时提交:
- 谷歌地图上的常量错误返回maxZoomService.getMaxZoomAtLatLng()
- Jquery .ajax POST 函数错误返回 asp.net MVC.
- happy 不会从 Boom 错误返回数据属性
- 操作结果在 ajax 调用中作为错误返回
- 我得到了错误“返回绑定”.PBKDF2(密码、盐、迭代、keylen、回调);^ TypeError: Not a bu
- 节点解析错误:返回时意外的令牌
- Bluebird承诺库的结果作为错误返回
- Jquery, php ajax post 500内部服务器错误返回
- 未定义的索引问题和错误返回
- 未从json文件中导入数据:Unhandled rejection错误返回
- Jquery错误返回bool值
- 表单提交后重新加载页面,尽管没有验证和错误返回
- 使用POST方法的AJAX函数会创建以下错误.错误:返回状态码414请求uri太大