【问题标题】:XMLHttpRequest is not a functionXMLHttpRequest 不是函数
【发布时间】:2016-05-01 16:27:53
【问题描述】:

我正在尝试使用 XMLHttpRequest 编写一些客户端 JavaScript:

$('#someId').on('input', function() {
  var req = XMLHttpRequest();
  // …
});

但我收到以下错误:

XMLHttpRequest 不是函数。 (在 'XMLHttpRequest()' 中,'XMLHttpRequest' 是 XMLHttpRequestConstructor 的一个实例)

如何解决这个问题?

【问题讨论】:

    标签: javascript xmlhttprequest


    【解决方案1】:

    错过了new,必须是:

    $('#someId').on('input', function() {
      var req = new XMLHttpRequest();
      // …
    });
    

    您可以在此处阅读有关 XHRHttpRequest 的更多信息 -
    https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

    以及如何在此处使用它 -
    https://developer.mozilla.org/ru/docs/XMLHttpRequest
    (目前只有这个页面翻译存在,但谷歌翻译可以帮助很多:))

    附言如果您使用的是 jQuery - 最好使用 @synthet1c 所说的 $.ajax()

    在此处了解更多信息 - http://api.jquery.com/jquery.ajax/

    【讨论】:

    • 如果已经安装了 jQuery,您可能还应该只使用 jQuery $.ajax 方法,因为它将为您提供跨所有浏览器的一致 api (ie)
    【解决方案2】:

    如果您已经在使用 jQuery,您可以使用$.ajax() 方法发出 ajax 请求:

    例子:

    $('#someId').on('input', function() {
    
        $.ajax({
    
            url: 'some_file.php',
            data: {
    
                postparam_1: 'ok',
                postparam_2: 'no'
            },
            method: 'get',
            success: function(x) {
    
                alert(x); // string result from server
            },
            error: function() {
    
                alert('Error!');
            }
        });
    });
    

    如果您想在您的应用中使用它,您必须检索适用于所有浏览器的 XmlHttpRequest 对象。

    var XMLHttpFactories = [
        function () {return new XMLHttpRequest()},
        function () {return new ActiveXObject("Msxml2.XMLHTTP")},
        function () {return new ActiveXObject("Msxml3.XMLHTTP")},
        function () {return new ActiveXObject("Microsoft.XMLHTTP")}
    ];
    
    function createXMLHTTPObject() {
        var xmlhttp = false;
        for (var i=0;i<XMLHttpFactories.length;i++) {
            try {
                xmlhttp = XMLHttpFactories[i]();
            }
            catch (e) {
                continue;
            }
            break;
        }
        return xmlhttp;
    }
    

    【讨论】:

    【解决方案3】:

    XMLHttpRequest 是构造函数,而不是 JavaScript 中的(通常)函数,您需要使用 new XMLHttpRequest()

    $('#someId').on('input', function() {
      var req = new XMLHttpRequest();
      // …
    });
    

    参考这篇 MDN 文章关于使用XMLHttpRequest:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2017-10-23
      • 2017-03-12
      • 1970-01-01
      相关资源
      最近更新 更多