关于http错误的JSONP responseText

时间:2014-10-09 12:16:46

标签: javascript jquery ajax jsonp

我正在使用带有jQuery的jsonp ajax请求来发送一些数据。当由于某种原因无法处理此数据时,我想返回结果,其中http状态不是200.这样我就可以使用访问日志来解析它们以进行统计。

不幸的是,当状态代码不是200时,我没有得到任何响应,尽管jQuery回调在响应主体中(当我用firebug检查时)。有没有办法赶上回应?

$.ajax({
    type: 'GET',
    url: '{{ sendMsgUrl }}',
    async: false,
    data: { 'form': formData },
    dataType: 'jsonp',
    success: function(json2) {
        if (json2.status == 'ok')
            // do stuff
        else {
            // output error
        };
    },
    error: function(xhr, status, error) {
        // this doesn't work: it never gets here
        alert(xhr.responseText);
        var json2 = eval("("+xhr.responseText+")");
    }
}).fail(function(jqXhr) {
    // never gets here either
    alert('status '+jqXhr.responseJSON);
});

1 个答案:

答案 0 :(得分:2)

没有。 JSONP不使用XHR。它会在页面中注入<script>元素。

理论上,您可能能够找到该脚本的error事件处理程序,但它不会触发跨源请求(并且使用JSONP没有多大意义)除非您提出跨学籍请求。)

使用JSONP时,您永远不会在任何事件处理程序中获得HTTP响应头的任何详细信息。