2012-12-10 46 views
0

可能重複:
How to make an ajax call without jquery?阿賈克斯沒有jQuery的

我在JS(阿賈克斯)代碼,但我想讓它沒有Ajax(XMLHttpRequest的)

$.ajax({ 
      type:'POST', 
      data:'slug='+prize, 
      url:'/wybrana-nagroda/', 
      success:function(msg) 
      { 
       $('#whaiting').hide(); 
       if(msg==='winner') 
        $(window.location).attr('href','/formularz'); 
      } 
     }); 

它應該看起來如何?

function send(post, url) { 
    var client = new XMLHttpRequest(); 
    client.open("POST", url); 
    client.send(message); 
} 

謝謝。

+2

https://developer.mozilla.org/en -US /文檔/ DOM/XMLHttpRequest的 – j08691

+0

http://stackoverflow.com/questions/8567114/how-to-make-an-ajax-call-without-jquery –

+1

爲什麼?也許更多關於你想要做什麼的見解可以幫助他人提供更完整的答案。 –

回答

2

如果你希望它是在所有的瀏覽器兼容,你需要做一些這樣的:

function sendRequest(url,callback,postData) { 
    var req = createXMLHTTPObject(); 
    if (!req) return; 
    var method = (postData) ? "POST" : "GET"; 
    req.open(method,url,true); 
    req.setRequestHeader('User-Agent','XMLHTTP/1.0'); 
    if (postData) 
     req.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 
    req.onreadystatechange = function() { 
     if (req.readyState != 4) return; 
     if (req.status != 200 && req.status != 304) { 
//   alert('HTTP error ' + req.status); 
      return; 
     } 
     callback(req); 
    } 
    if (req.readyState == 4) return; 
    req.send(postData); 
} 

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

信用:quirksmode

+0

這個效果很好。 – pylover