2016-07-22 17 views
0

我一直在尋找AJAX純JavaScript(沒有jQuery)的學習目的,並遇到了這個video, along with the code (shown below)如何使一個。然而,它適用於GET方法,我不確定如何調整它以接受其他參數,以便函數可用於POSTGET,具體取決於我指定的參數。例如,行xhr.open('GET', url, true);xhr.send('');都是GET - 特定(該函數中的所有其他行都是相同的GETPOST方法) - 我希望能夠指定是使用POST還是GET作爲參數function loadxhr.openfunction loadxhr.send('');如何將此AJAX請求函數(原始Javascript)轉換爲使用POST而不是GET?

例如一個字符串,如"username="+username+"&password="+password,下面的功能是用於GET和使用這樣load('emails.php', function(xhr) {...}。我想使用的功能,像這樣:load('emails.php', 'POST', '"username="+username+"&password="+password' function(xhr) {...}` for POST and負載( 'emails.php', 'GET', '',函數(XHR){...}`

的功能AJAX的GET:

function load(url, callback) { 
    var xhr; 

    if(typeof XMLHttpRequest !== 'undefined') xhr = new XMLHttpRequest(); 
    else { 
     var versions = ["Microsoft.XmlHttp", 
      "MSXML2.XmlHttp", 
      "MSXML2.XmlHttp.3.0", 
      "MSXML2.XmlHttp.4.0", 
      "MSXML2.XmlHttp.5.0"]; 

     for(var i = 0, len = versions.length; i < len; i++) { 
      try { 
       xhr = new ActiveXObject(versions[i]); 
       break; 
      } 
      catch(e){} 
     } // end for 
    } 

    xhr.onreadystatechange = function() { 
     if((xhr.readyState < 4) || xhr.status !== 200) return; 
     callback(xhr); 
    }; 

    xhr.open('GET', url, true); 
    xhr.send(''); 

} 

回答

1

眼下請求主體設置爲空和忽略,因爲你是一個GET請求,你就應該能夠把任何你在POST請求的主體想要發送的發送方法裏面:

xhr.open('POST', url, true); 
xhr.send(JSON.stringify(someJsonHere)); 

檢查出documentation for the xhr.send method here:

這裏也是一個更徹底的鏈接guide on using XMLHttpRequests;在底部它有一個專門用於發送數據的部分。

+0

我的標題是不正確的 - 我試圖找到一種方法來添加2個額外的參數到原始函數,以便根據參數,我可以使用相同的函數來執行GET或POST(例如在原始後)。我不想將函數從GET轉換到POST,只需添加對POST的支持。對困惑感到抱歉。 – Iteration

+0

我不確定其他參數是什麼,但是您似乎可以傳遞一個名爲method的參數,它將'GET'或'POST'作爲字符串並將該字符串用作xhr.open中的第一個參數()。然後,您可以添加一個名爲body的參數,該參數可以被檢查爲undefined,然後傳入xhr.send()。希望能幫助你的初衷。 –

相關問題