1. #1
    Lieutenant
    Dabei seit
    Apr 2012
    Beiträge
    834

    Lightbulb [Ajax] xmlhttprequest send mehrere parameter?

    Schönen guten Tag Zusammen,

    ich habe eine Frage und zwar möchte ich per XMLHttpRequest mehrere Paramtere per send() übergeben wie müsste die richtige Syntax aussehen?

    Mein Beispiel Code:

    Code:
    		
    var form = new FormData();
    var url = "meinPhpScript.php";
    // Request öffnen
    request.open('post', url, true);
    // Request senden
    request.send(form);
    Nun würde ich gern neben der Form noch zwei Informationen/Parameter mitschicken, wie genau müsste die Syntax aussehen?


    Die anderen Werte:

    TP=<?php echo $TYP; ?>&NR=<?php echo $NUMMER

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.
  3. #2
    Lt. Commander
    Dabei seit
    Okt 2010
    Ort
    Zuhaus
    Beiträge
    1.534

    [Ajax] AW: xmlhttprequest send mehrere parameter?

    Code [php]:
    $.ajax({
        type: 'POST',
        // make sure you respect the same origin policy with this url:
        // http://en.wikipedia.org/wiki/Same_origin_policy
        url: 'http://nakolesah.ru/',
        data: { 
            'foo': 'bar', 
            'ca$libri': 'no$libri' // <-- the $ sign in the parameter name seems unusual, I would avoid it
        },
        success: function(msg){
            alert('wow' + msg);
        }
    });
    Quelle

    so in etwa müsste das funktionieren (Achtung ist JQuery+AJAX).

    kannst auch einfach in die variable data die Parameter wie bei GET reinschreiben (data = "?a=b&c=d&t=x")
    Geändert von echoDave (12.12.2012 um 15:57 Uhr)
    Meine 3 Freizeitdiebe:
    - Filme und meine Anlage: Heimkinosystem + BluRays
    - Neuerdings Fotografie: Canon 650D | Tamron 17-50mm F/2.8 XR | Canon 55-250 IS II | Zubehör
    - Meine Ladies! Whisky Collection

    flickr | facebook | twitter | Homepage | bluray-disc.de

  4. #3
    Lieutenant
    Dabei seit
    Jun 2006
    Beiträge
    900

    [Ajax] AW: xmlhttprequest send mehrere parameter?

    iDave hat es auf den Punkt gebracht. GET-Parameter kannst du meines Wissens nach nur mittels jQuery komfortabel anhängen. Ohne diese Library wäre folgender Code eine Möglichkeit:

    Code:
    var url = "meinPhpScript.php?TP=" + typ + "&NR=" + number;
    Das Aufbereiten der Variablen "typ" und "number" musst du aber selbst durchführen (jQuery würde dir diese Arbeit abnehmen). Stichwort: JS-Funktion encodeURIComponent().

  5. #4
    Lieutenant
    Ersteller dieses Themas

    Dabei seit
    Apr 2012
    Beiträge
    834

    [Ajax] AW: xmlhttprequest send mehrere parameter?

    Wieso kann ich nicht einfach so verwenden ^^?

    Code:
    		
    var form = new FormData();
    var url = "meinPhpScript.php";
    // Request öffnen
    request.open('post', url, true);
    // Request senden
    request.send(form + ?TP=" + typ + "&NR=" + number);

  6. #5
    Lt. Junior Grade
    Dabei seit
    Apr 2012
    Ort
    Bad Gateway
    Beiträge
    400

    [Ajax] AW: xmlhttprequest send mehrere parameter?

    Bei GET muss die URL so aussehen: seite.php?hallo=welt&ein=beispiel
    Bei POST ist die URL nur "seite.php" und die Parameter müssen in die send Anweisung (ohne URL davor!).
    Zudem sollte man bei POST unbedingt den Content-type in einem Header mitsenden, damit die Browser die Parameter richtig verarbeiten
    Zusammen sieht das so aus:
    Code:
    request.open("POST", "seite.php");
    request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    request.send("hallo=welt&ein=beispiel");
    Wie du die URL zusammenbaust und ob man GET oder POST nimmt ist letztendlich egal. Kommt immer auf den Anwendungsfall an.
    Geändert von T0a5tbr0t (12.12.2012 um 17:11 Uhr)

  7. #6
    Lieutenant
    Ersteller dieses Themas

    Dabei seit
    Apr 2012
    Beiträge
    834

    [Ajax] AW: xmlhttprequest send mehrere parameter?

    Zitat Zitat von iDave Beitrag anzeigen
    Code [php]:
    $.ajax({
        type: 'POST',
        // make sure you respect the same origin policy with this url:
        // http://en.wikipedia.org/wiki/Same_origin_policy
        url: 'http://nakolesah.ru/',
        data: { 
            'foo': 'bar', 
            'ca$libri': 'no$libri' // <-- the $ sign in the parameter name seems unusual, I would avoid it
        },
        success: function(msg){
            alert('wow' + msg);
        }
    });
    Quelle

    so in etwa müsste das funktionieren (Achtung ist JQuery+AJAX).

    kannst auch einfach in die variable data die Parameter wie bei GET reinschreiben (data = "?a=b&c=d&t=x")
    Kann man mit dieser Methode auch DOM Objekte senden? Den das ist ja mein Problem ich möchte das DOM Objekt Form und noch zusätzliche zwei Parameter.

  8. #7
    Lt. Commander
    Dabei seit
    Okt 2010
    Ort
    Zuhaus
    Beiträge
    1.534

    [Ajax] AW: xmlhttprequest send mehrere parameter?

    puuhhhh das weiss ich nicht, müsstest mal ausprobieren, Webdevelopment ist bei mir zu lange her, damit ich es so genau in der Tiefe weiss.

    Code [php]:
    data: { 
            'foo': 'bar', 
            'ca$libri': 'no$libri',
             'form': new Form()
    }
    ich würde es einfach so mal probieren, im Grunde würde ich sagen was du mit reine JS machen kannst, geht mit JQuery auch.
    Meine 3 Freizeitdiebe:
    - Filme und meine Anlage: Heimkinosystem + BluRays
    - Neuerdings Fotografie: Canon 650D | Tamron 17-50mm F/2.8 XR | Canon 55-250 IS II | Zubehör
    - Meine Ladies! Whisky Collection

    flickr | facebook | twitter | Homepage | bluray-disc.de

  9. #8
    Lt. Junior Grade
    Dabei seit
    Apr 2012
    Ort
    Bad Gateway
    Beiträge
    400

    [Ajax] AW: xmlhttprequest send mehrere parameter?

    Zitat Zitat von SourceCoder Beitrag anzeigen
    Kann man mit dieser Methode auch DOM Objekte senden? Den das ist ja mein Problem ich möchte das DOM Objekt Form und noch zusätzliche zwei Parameter.
    Wie willst du das denn Serverseitig verarbeiten? Wenn du Daten einfach aus einem Formular an den Server senden willst, würde ich ein DOM Objekt nicht empfehlen! Alleine schon, weil das schwer zu überprüfen ist und eine Sicherheitslücke erzeugen könnte. Wenn der Server Daten einliest sollte man die vor der Verarbeitung IMMER auf Gültigkeit überprüfen und gegebenenfalls ein PHP Filter drüber jagen. Man könnte Daten in Form von JSON (das sind auch nur string:value Paare und) übermitteln aber man sollte immer versuchen es bei AJAX so simpel wie möglich zu halten. Ein einfacher String (a=b&c=d...) mit Javascript/JQuery zusammenbauen und per GET oder POST senden ist die beste Praxis um Sachen ZUM Server zu senden. Für die Antwort gibt es da natürlich mehr Möglichkeiten.

  10. #9
    geisterfahrer
    Gast

    [Ajax] AW: xmlhttprequest send mehrere parameter?

    Das FormData Objekt hat eine Funktion append mit der man noch Daten hinzufügen kann:
    form.append("parametername", parameterwert);

    Auf die Frage wie man das FormData Objekt verarbeitet: Ganz normal. Wenn man dies send übergibt, empfängt man auf Serverseite alle Variablen die in FormData angegeben sind per $POST["parametername"] (also hier beispielhaft in PHP angegeben)

    Da hier FormData hier einigen unbekannt zu sein scheint:
    Wenn man irgendwas hat wie:
    <form id="test">
    <input name="feld1" value="wert1"/>
    <input name="feld2" value="wert2"/>
    </form>
    und man dann mit JS
    var form = new FormData(document.getElementById("test"));
    und das dann per xhrobject.send(form) versendet, hat man auf Server dem server $POST['feld1] = "wert1", $POST['feld2'] = "wert2"
    Und wenn man eben neben den Formularfeldern noch irgendwas anderes mitsenden will, kann man append nutzen. Man kann das Objekt aber auch ohne Formular nutzen.

  11. #10
    Lt. Junior Grade
    Dabei seit
    Apr 2012
    Ort
    Bad Gateway
    Beiträge
    400

    [Ajax] AW: xmlhttprequest send mehrere parameter?

    Achso FormData() kann man natürlich senden.
    Da hat mein Hirn nicht geschaltet. Ich dachte er wollte ein beliebiges "DOM" Objekt senden Hab mich schon gewundert.

  12. #11
    Lieutenant
    Ersteller dieses Themas

    Dabei seit
    Apr 2012
    Beiträge
    834

    [Ajax] AW: xmlhttprequest send mehrere parameter?

    Zitat Zitat von geisterfahrer Beitrag anzeigen
    Das FormData Objekt hat eine Funktion append mit der man noch Daten hinzufügen kann:
    form.append("parametername", parameterwert);

    Auf die Frage wie man das FormData Objekt verarbeitet: Ganz normal. Wenn man dies send übergibt, empfängt man auf Serverseite alle Variablen die in FormData angegeben sind per $POST["parametername"] (also hier beispielhaft in PHP angegeben)

    Da hier FormData hier einigen unbekannt zu sein scheint:
    Wenn man irgendwas hat wie:
    <form id="test">
    <input name="feld1" value="wert1"/>
    <input name="feld2" value="wert2"/>
    </form>
    und man dann mit JS
    var form = new FormData(document.getElementById("test"));
    und das dann per xhrobject.send(form) versendet, hat man auf Server dem server $POST['feld1] = "wert1", $POST['feld2'] = "wert2"
    Und wenn man eben neben den Formularfeldern noch irgendwas anderes mitsenden will, kann man append nutzen. Man kann das Objekt aber auch ohne Formular nutzen.
    Danke geisterfahrer genau so habe ich es auch gelöst vergessen hier die Lösung zu posten xD.

    PS: Kann geschlossen werden!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •