javascript - 关于 http 错误的 JSONP 响应文本

标签 javascript jquery ajax jsonp

我正在使用 jsonp ajax 请求和 jQuery 来发送一些数据。当由于某种原因无法处理这些数据时,我想返回 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);
});

最佳答案

没有。 JSONP 不使用 XHR。它注入(inject)了 <script>元素到页面中。

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

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

关于javascript - 关于 http 错误的 JSONP 响应文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26278225/

相关文章:

jquery - 在网页中快速加载图像

php - 限制对 ajax 调用的访问并阻止爬虫和蜘蛛

javascript - 删除数组中的对象元素

javascript - 在 jQuery 中制作转入/转出幻灯片

javascript - AngularJS/解析 $http --data-urlencode

jquery - 使用 jQuery 检查 AJAX 响应中的 JSON 字符串

javascript - 使用ajax调用填充数据表

javascript - 如何优雅地加载图片?

javascript - 如何在 JavaScript 中检测二维数组的另一个值?

javascript - HTML5 视频 - 海报图像是否应该在显示视频之前过早消失?