ajax响应错误(XML解析错误:找不到元素位置:moz-nullprincipal)
我无法得到ajax的回复。 请指导我如何解决此错误,我从服务器返回成功的数据我已经在小提琴web调试器中检查了它仍然ajax显示错误。 XML解析错误:找不到元素位置:moz-nullprincipal:{6b0a1ac2-50ab-4053-9f71-8ae49202288d}第1行,第1列:
$j.ajax({ type:"POST", url:'http://www.w3schools.com/webservices/tempconvert.asmx/CelsiusToFahrenheit', data: 'Celsius=12', crossDomain:true, async: false, success:function(response) { alert("Success Full Done"+response.string); }, beforeSend: function( xhr ) { xhr.overrideMimeType( 'text/plain; charset=UTF-8' ); } });
我有这个问题请求:
$.ajax({ type: "POST", url: ajaxUrl, dataType : "json", contentType: "application/json", data: JSON.stringify(data), success: function (data) { ... } });
请求中的Accept标头是:
Accept application/json, text/javascript, */*; q=0.01
响应状态为200,但浏览器检测到错误并且没有成功回调
修复者删除dataType:“json”:
$.ajax({ type: "POST", url: ajaxUrl, contentType: "application/json", ...
请求中接受标头的唯一区别变为:
Accept */*
但现在称成功回调。
当我进行GET
XMLHttpRequest
调用时,我遇到了同样的问题。
var req = new XMLHttpRequest(); req.open('GET', '/exampleServlet', false); req.send(null);
它是通过在HttpServletResponse上设置ContentType来修复的。
response.setContentType("text/plain");
将“beforeSend”函数添加到AJAX调用中以覆盖可接受的响应mime类型。
请参阅jQuery.ajax()文档: http : //api.jquery.com/jquery.ajax/
从jQuery 1.5.1开始,jqXHR对象还包含overrideMimeType()方法(它在jQuery 1.4.x中也可用,但在jQuery 1.5中暂时删除)。 .overrideMimeType()方法可以在beforeSend()回调函数中使用,例如,修改响应内容类型头:
$.ajax({ url: "http://fiddle.jshell.net/favicon.png", beforeSend: function( xhr ) { xhr.overrideMimeType( "text/plain; charset=x-user-defined" ); } }) .done(function( data ) { if ( console && console.log ) { console.log( "Sample of data:", data.slice( 0, 100 ) ); } });
和:
数据类型
对$ .ajax()调用的不同类型的响应在传递给成功处理程序之前会受到不同类型的预处理。 默认情况下,预处理的类型取决于响应的Content-Type,但可以使用dataType选项显式设置。 如果提供了dataType选项,则将忽略响应的Content-Type标头。
这个错误可能是由于两个原因造成的。 一个是java后端没有响应,另一个是java Controller方法中没有@ResponseBody。
我将ContentType添加到ResponseEntity并解决了问题。 尝试将有效的ContentType添加到控制器响应中:
ResponseEntity.ok().contentType(MediaType.TEXT_PLAIN).build();