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:
Nun würde ich gern neben der Form noch zwei Informationen/Parameter mitschicken, wie genau müsste die Syntax aussehen?Code:var form = new FormData(); var url = "meinPhpScript.php"; // Request öffnen request.open('post', url, true); // Request senden request.send(form);
Die anderen Werte:
TP=<?php echo $TYP; ?>&NR=<?php echo $NUMMER
-
12.12.2012, 15:52 #1
[Ajax] xmlhttprequest send mehrere parameter?
- Anzeige
Logge dich ein, um diese Anzeige nicht zu sehen. -
12.12.2012, 15:55 #2
[Ajax] AW: xmlhttprequest send mehrere parameter?
QuelleCode [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); } });
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)
Ich packe meinen Koffer und nehme mit...
MacBook Pro 13.3" Mid 2009 | 8GB Ram | 2.26Ghz
iPhone 4 | Schwarz | 16GB
Play Station 3 320 GB Uncharted 3 Special Edition | Sony Bravia 32" FullHD
-
12.12.2012, 16:01 #3Lieutenant
- Dabei seit
- Jun 2006
- Beiträge
- 568
[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:
Das Aufbereiten der Variablen "typ" und "number" musst du aber selbst durchführen (jQuery würde dir diese Arbeit abnehmen). Stichwort: JS-Funktion encodeURIComponent().Code:var url = "meinPhpScript.php?TP=" + typ + "&NR=" + number;
-
12.12.2012, 16:23 #4
[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);
-
12.12.2012, 16:42 #5
[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:
Wie du die URL zusammenbaust und ob man GET oder POST nimmt ist letztendlich egal. Kommt immer auf den Anwendungsfall an.Code:request.open("POST", "seite.php"); request.setRequestHeader("Content-type","application/x-www-form-urlencoded"); request.send("hallo=welt&ein=beispiel");Geändert von T0a5tbr0t (12.12.2012 um 17:11 Uhr)
-
13.12.2012, 09:51 #6
-
13.12.2012, 10:05 #7
[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.
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.Code [php]:data: { 'foo': 'bar', 'ca$libri': 'no$libri', 'form': new Form() }Ich packe meinen Koffer und nehme mit...
MacBook Pro 13.3" Mid 2009 | 8GB Ram | 2.26Ghz
iPhone 4 | Schwarz | 16GB
Play Station 3 320 GB Uncharted 3 Special Edition | Sony Bravia 32" FullHD
-
13.12.2012, 17:12 #8
[Ajax] AW: xmlhttprequest send mehrere 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.
-
13.12.2012, 18:27 #9Ensign
- Dabei seit
- Jan 2005
- Beiträge
- 144
[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.
-
13.12.2012, 18:47 #10
[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.
-
14.12.2012, 08:37 #11

Zitieren
