2011-11-09 71 views
21

如何使用XMLHTTPRequest將變量發送到服務器?我只是將它們添加到GET請求的URL的末尾,如?variable1=?variable2=等?如何使用XMLHTTPRequest傳遞變量

所以或多或少:

XMLHttpRequest("GET", "blahblah.psp?variable1=?" + var1 + "?variable2=" + var2, true) 
+1

您可以這樣做,但您需要用鍵符號而不是問號來分隔鍵/值對。所以:''blahblah.php?variable1 =「+ var1 +」&variable2 =「+ var2' – nnnnnn

+1

另外要注意'var1'和'var2'本身不包含保留字符。你可能想用'encodeURIComponent()'來轉義它們。 – nullability

回答

28

如果你想通過使用GET變量的服務器,這將是的方式是。請記得妥善轉義(urlencode)!

如果您不希望變量可見,也可以使用POST。

一個完整的樣品是:

var url = "bla.php"; 
var params = "somevariable=somevalue&anothervariable=anothervalue"; 
var http = new XMLHttpRequest(); 

http.open("GET", url+"?"+params, true); 
http.onreadystatechange = function() 
{ 
    if(http.readyState == 4 && http.status == 200) { 
     alert(http.responseText); 
    } 
} 
http.send(null); 

爲了測試這一點,(使用PHP),你可以var_dump $_GET看到您檢索什麼。

+0

這是相當不錯的 – rpivovar

6

傳遞變量GET請求的正確格式爲

?variable1=value1&variable2=value2&variable3=value3... 
       ^---notice &---^

但從本質上講,你有正確的想法。

+0

斑點:) – TJHeuvel

0

是的,這是使用GET請求執行此操作的正確方法。

但是,請記住多個查詢字符串參數應與&

如分開。 ?變量1 =值&變量2 =數值

1

以下是正確的做法:

xmlhttp.open("GET","getuser.php?fname="+abc ,true); 
20

手動格式的查詢字符串是對簡單的情況。但是當參數很多時會變得乏味。

您可以編寫一個簡單的實用程序函數來處理爲您構建查詢格式。

function formatParams(params){ 
    return "?" + Object 
     .keys(params) 
     .map(function(key){ 
      return key+"="+encodeURIComponent(params[key]) 
     }) 
     .join("&") 
} 

而你會用這種方式來建立一個請求。

var endpoint = "https://api.example.com/endpoint" 
var params = { 
    a: 1, 
    b: 2, 
    c: 3 
} 

var url = endpoint + formatParams(params) 
//=> "https://api.example.com/endpoint?a=1&b=2&c=3" 

有許多可用於操作URL的實用功能。如果你的項目中有JQuery,你可以試試http://api.jquery.com/jquery.param/

它與上面的示例函數類似,但是遞歸地序列化嵌套對象和數組。