getResponseHeader不是一个函数

时间:2010-03-15 00:48:38

标签: jquery

我需要从另一个页面获取值。但我使用以下代码得到此错误。我该如何解决?

    $(document).ready(function() { 
        $("[name='submit']").click(function() { 
            $.ajax({
                type: "POST",
                data: $(".form-signup").serialize(),
                url: "external.asp", 
                success: function(output) { 
                alert(output.getResponseHeader("Content-Length"));
},
                error: function(output) {
                $('.sysMsg').html(output);
                }
            }); 
        }); 
    }); 

2 个答案:

答案 0 :(得分:17)

首先,您的设置对象格式不正确,success函数未终止。

编辑:似乎您正在使用jQuery 1.3.x,如果是这样,$.ajax函数本身会返回XHR对象:

$(document).ready(function() { 
    $("[name='submit']").click(function() { 
        var xhr = $.ajax({
            type: "POST",
            data: $(".form-signup").serialize(),
            url: "external.asp", 
            success: function(output, status) { 
              alert(xhr.getResponseHeader("Content-Length"));
            },
            error: function(output) {
              $('.sysMsg').html(output);
            }
        }); 
    }); 
});

对于jQuery 1.4+版本:

然后,当success回调传递它执行的三个参数(success(data, textStatus, XMLHttpRequest))时,你需要在 XmlHttpRequest 对象上调用getResponseHeader,第三个论点:

$(document).ready(function() { 
    $("[name='submit']").click(function() { 
        $.ajax({
            type: "POST",
            data: $(".form-signup").serialize(),
            url: "external.asp", 
            success: function(output, status, xhr) { 
              alert(xhr.getResponseHeader("Content-Length"));
            },
            error: function(output) {
              $('.sysMsg').html(output);
            }
        }); 
    }); 
});

答案 1 :(得分:-2)

是跨域调用吗?你可能正在进入一个全新的痛苦世界? (Cross Domain Resource Sharing GET: 'refused to get unsafe header "etag"' from Response)当你这样做时。