webentwicklung-frage-antwort-db.com.de

Wie kann ich Variablen mit XMLHTTPRequest übergeben?

Wie sende ich Variablen mit XMLHTTPRequest an den Server? Würde ich sie einfach am Ende der URL der GET-Anfrage hinzufügen, wie ?variable1=?variable2= usw.?

Also mehr oder weniger:

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

Wenn Sie Variablen mit GET an den Server übergeben möchten, wäre dies übrigens der Fall. Denken Sie daran, sie ordnungsgemäß zu entschlüsseln (urlencode)!

Sie können auch POST verwenden, wenn Ihre Variablen nicht sichtbar sein sollen.

Eine vollständige Probe wäre:

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

Um dies (mit PHP) zu testen, können Sie var_dump $_GET sehen, was Sie abrufen.

38
TJHeuvel

Das manuelle Formatieren der Abfragezeichenfolge ist in einfachen Situationen ausreichend. Es kann jedoch langweilig werden, wenn es viele Parameter gibt.

Sie könnten eine einfache Dienstprogrammfunktion schreiben, die für Sie das Erstellen der Abfrageformatierung übernimmt.

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

Und Sie würden es auf diese Weise verwenden, um eine Anfrage zu erstellen.

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"

Es gibt viele Hilfsfunktionen zur Bearbeitung von URLs. Wenn Sie JQuery in Ihrem Projekt haben, können Sie http://api.jquery.com/jquery.param/ versuchen. 

Sie ähnelt der obigen Beispielfunktion, behandelt jedoch rekursiv serialisierte verschachtelte Objekte und Arrays.

36
James Forbes

Das richtige Format für das Übergeben von Variablen in einer GET-Anforderung lautet

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

Aber im Grunde haben Sie die richtige Idee.

6
mellamokb

Folgendes ist der richtige Weg:

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

Wenn Sie allergisch gegen die Verkettung von Zeichenfolgen sind und keine IE Kompatibilität benötigen, können Sie URL und URLSearchParams verwenden ] _ :

const target = new URL('https://example.com/endpoint');
const params = new URLSearchParams();
params.set('var1', 'foo');
params.set('var2', 'bar');
target.search = params.toString();

console.log(target);

Oder um die Parameter eines ganzen Objekts zu konvertieren:

const paramsObject = {
  var1: 'foo',
  var2: 'bar'
};

const target = new URL('https://example.com/endpoint');
target.search = new URLSearchParams(paramsObject).toString();

console.log(target);
0
AuxTaco

Wie wäre es mit?

function callHttpService(url, params){
  // Assume params contains key/value request params
  let queryStrings = '';

  for(let key in params){
      queryStrings += `${key}=${params[key]}&`
    } 
 const fullUrl = `${url}?queryStrings`

  //make http request with fullUrl
}

Ja, das ist die richtige Methode, um dies mit einer GET-Anfrage zu tun. 

Beachten Sie jedoch, dass mehrere Abfragezeichenfolgeparameter mit & getrennt werden sollten.

z.B. Variable1 = Wert1 und Variable2 = Wert2

0
cowls