2016-04-27 55 views
0

我试图用XMLHttpRequest写一些客户端JavaScript函数:XMLHttpRequest是不是

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

,但我得到了以下错误:

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

如何解决这一问题?

回答

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

你应该也只是如果已经安装了jQuery,请使用jQuery $ .ajax方法,因为它可以在所有浏览器中为您提供一致的API(例如) – synthet1c

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; 
} 
+1

只读第二部分如果您要支持IE6 https:// deve loper.microsoft.com/en-us/microsoft-edge/ie6countdown/ –

相关问题