2011-11-09 4 views
21

¿Cómo puedo enviar variables al servidor con XMLHTTPRequest? ¿Los agregaría al final de la URL de la solicitud GET, como ?variable1=?variable2=, etc.?¿Cómo pasar a lo largo de variables con XMLHTTPRequest

Así que más o menos:

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

Usted puede hacerlo de esa manera, pero que necesita para separar los pares clave/valor con los símbolos de unión en lugar de signos de interrogación. Entonces: '" blahblah.php? Variable1 = "+ var1 +" & variable2 = "+ var2' – nnnnnn

+1

También tenga cuidado de que' var1' y 'var2' no contengan caracteres reservados. Es posible que desee escapar de ellos con 'encodeURIComponent()'. – nullability

Respuesta

28

Si desea pasar variables al servidor utilizando GET que sería el camino sí. ¡Recuerde escaparse (urlencode) de forma adecuada!

También es posible usar POST, si no quieren que sus variables sean visibles.

Una muestra completa sería:

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

Para probar esto, (usando PHP) que podría var_dump $_GET para ver lo que se recupera.

+0

Esto es bastante agradable – rpivovar

6

El formato correcto para pasar variables en una petición GET es

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

Pero, en esencia, tiene la idea correcta.

+0

Bien manchado :) – TJHeuvel

0

Si ese es el método correcto para hacerlo con una petición GET.

Sin embargo, por favor recuerde que los múltiples parámetros de cadena de consulta deben ser separados con &

por ejemplo. ? Variable1 = valor1 & variable2 = valor2

1

A continuación se presenta de forma correcta:

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

formatear manualmente la cadena de consulta está bien para situaciones simples. Pero puede volverse tedioso cuando hay muchos parámetros.

Se puede escribir una función sencilla utilidad que se encarga de la construcción de la consulta el formato para usted.

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

Y lo usaría de esta manera para generar una solicitud.

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" 

Hay muchas funciones de utilidad disponibles para manipular URL. Si tiene JQuery en su proyecto, puede probar http://api.jquery.com/jquery.param/.

Es similar a la función de ejemplo anterior, pero maneja de forma recursiva serializar objetos anidados y matrices.

Cuestiones relacionadas