2013-06-05 66 views
3

我无法从ajax获得响应。请指导我如何解决这个错误,我从服务器成功的数据返回我已经检查它在小提琴web调试器仍然ajax显示错误。 XML解析错误:没有的元素中找到位置:MOZ-nullprincipal:{6b0a1ac2-50ab-4053-9f71-8ae49202288d} 1号线,1列:ajax响应错误(XML解析错误:找不到元素位置:moz-nullprincipal)

  $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'); 
} 

     }); 
+0

检查此链接:http://tharindumathew.com/2012/05/16/xml-parsing-error-in-firebug/ –

+0

链接现在在:http://mackiemathew.wordpress.com/2012/ 05/16/xml-parsing-error-in-firebug/ –

回答

2

我有这个问题与要求:在请求

$.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 

响应状态为2 00,但浏览器检测到错误,并没有所谓的

成功回调被删除的dataType修正: “JSON”:

$.ajax({ 
    type: "POST", 
    url: ajaxUrl, 
    contentType: "application/json", 
    ... 

,在请求接受头部唯一的区别改为:

Accept */* 

但现在称为成功回调。

1

我在调用GETXMLHttpRequest时遇到了同样的问题。

var req = new XMLHttpRequest(); 
req.open('GET', '/exampleServlet', false); 
req.send(null); 

它通过在HttpServletResponse上设置ContentType来解决。

response.setContentType("text/plain"); 
+0

你是对的,我是从servlet中完成的,它工作正常。 –

0

将“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()调用的不同类型的响应在传递给成功处理程序之前会受到不同类型的预处理。预处理的类型默认取决于响应的内容类型,但可以使用dataType选项显式设置。如果提供了dataType选项,则会忽略响应的Content-Type标头。

相关问题