XMLHttpRequest不是一个函数

时间:2016-04-27 13:44:14

标签: javascript xmlhttprequest

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

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

但是我收到以下错误:

  

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

如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

错过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
(只有这个页面翻译存在,但谷歌翻译可以帮助很多:))

P.S。如果你正在使用jQuery - 更好地使用$.ajax()作为@ synthet1c说。

在此处阅读更多相关信息 - http://api.jquery.com/jquery.ajax/

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

请参阅此MDN文章,了解如何使用XMLHttpRequesthttps://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest