2011-11-09 18 views
21

Làm cách nào để gửi các biến đến máy chủ với XMLHTTPRequest? Tôi có thể thêm chúng vào cuối URL của yêu cầu GET, chẳng hạn như ?variable1=?variable2=, v.v. không?Làm cách nào để chuyển các biến với XMLHTTPRequest

Vì vậy, nhiều hơn hoặc ít hơn:

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

Bạn có thể thực hiện theo cách đó, nhưng bạn sẽ cần tách các cặp khóa/giá trị bằng ký hiệu thay vì dấu chấm hỏi. Vì vậy: '" blahblah.php? Variable1 = "+ var1 +" & variable2 = "+ var2' – nnnnnn

+1

Cũng chú ý rằng' var1' và 'var2' không tự chứa ký tự dành riêng. Bạn có thể muốn thoát chúng bằng 'encodeURIComponent()'. – nullability

Trả lời

28

Nếu bạn muốn vượt qua các biến đến máy chủ sử dụng GET đó sẽ là con đường đúng. Hãy nhớ để thoát (urlencode) chúng đúng cách!

Cũng có thể sử dụng POST, nếu bạn không muốn biến của mình hiển thị.

Một mẫu hoàn chỉnh sẽ là:

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

Để kiểm tra điều này, (sử dụng PHP), bạn có thể var_dump $_GET để xem những gì bạn lấy.

+0

Điều này là khá tốt đẹp – rpivovar

6

Định dạng đúng cho đi qua các biến trong một yêu cầu GET là

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

Nhưng về cơ bản, bạn có ý tưởng đúng.

+0

Cũng phát hiện :) – TJHeuvel

0

Có đó là phương pháp chính xác để thực hiện điều đó với yêu cầu GET.

Tuy nhiên, hãy nhớ rằng nhiều tham số chuỗi truy vấn nên được tách ra với &

ví dụ. ? Variable1 = value1 & variable2 = value2

1

Sau đây là cách chính xác:

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

Manually định dạng chuỗi truy vấn là tốt cho các tình huống đơn giản. Nhưng nó có thể trở nên tẻ nhạt khi có nhiều thông số.

Bạn có thể viết một hàm tiện ích đơn giản để xử lý việc xây dựng định dạng truy vấn cho bạn.

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

Và bạn sẽ sử dụng theo cách này để tạo yêu cầu.

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" 

Có nhiều chức năng tiện ích có sẵn để thao tác URL. Nếu bạn có JQuery trong dự án của mình, bạn có thể dùng thử http://api.jquery.com/jquery.param/.

Nó tương tự như hàm ví dụ ở trên, nhưng xử lý đệ quy tuần tự hóa các đối tượng lồng nhau và mảng.

Các vấn đề liên quan