XMLHttpRequest 不是函数

XMLHttpRequest is not a function

我正在尝试使用 XMLHttpRequest:

编写一些客户端 JavaScript
$('#someId').on('input', function() {
  var req = XMLHttpRequest();
  // …
});

但我收到以下错误:

XMLHttpRequest is not a function. (In 'XMLHttpRequest()', 'XMLHttpRequest' is an instance of XMLHttpRequestConstructor)

如何解决这个问题?

错过了 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
(目前只有这个页面翻译存在,但是 google 翻译会有很大帮助:) )

p.s。如果您使用 jQuery - 最好使用 $.ajax() 正如@synthet1c 所说。

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

如果您已经在使用 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;
}

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

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

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