3. Request mit mehreren Werten senden
Einen Wert zu senden ist ja ganz schön, aber manchmal braucht man auch mehr als einen - wie das geht wird hier erklärt.
Das Beispiel im Detail:
Unser Script zeigt eine Liste von 3 Namen an. Beim Klick auf einen der Namen, wird der jeweilige Name und seine Position
unterhalb der Liste in Großbuchstaben angezeigt.
Damit das Beispiel nicht zu langweilig wird, geben wir als Parameter diesmal nicht direkt den Namen mit, sondern eine ID,
<ul>
<li><a id="source_01" href="javascript:setRequest('01')">Max</a></li>
<li><a id="source_02" href="javascript:setRequest('02')">Susi</a></li>
<li><a id="source_03" href="javascript:setRequest('03')">Charly</a></li>
</ul>
über die der Name dann per Javascript ausgelesen wird.
var value = document.getElementById('source_'+id).innerHTML;
Anschließend schicken wir nun beide Informationen (Name und Position) als Request an das PHP-Script.
request.send('name='+value+'&pos='+id);
Im PHP-Script werten wir die übermittelten Daten aus und schicken das Ergebis wieder zurück.
$name = strtoupper($_POST['name']);
$pos = $_POST['pos'];
echo $name." steht an Position ".$pos;
Der Rest erfolgt wieder analog zu Beispiel 2.
Der komplette Code (HTML-Script):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ajax Beispiel 003</title>
<script type="text/javascript">
var request = false;
function setRequest(id) {
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
request = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try {
request = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e) {}
}
}
if (!request) {
alert("Kann keine XMLHTTP-Instanz erzeugen");
return false;
} else {
var url = "ajax_003.php";
var value = document.getElementById('source_'+id).innerHTML;
request.open('post', url, true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send('name='+value+'&pos='+id);
request.onreadystatechange = interpretRequest;
}
}
function interpretRequest() {
switch (request.readyState) {
case 4:
if (request.status != 200) {
alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
} else {
var content = request.responseText;
document.getElementById('content').innerHTML = content;
}
break;
default:
break;
}
}
</script>
</head>
<body>
<ul>
<li><a id="source_01" href="javascript:setRequest('01')">Max</a></li>
<li><a id="source_02" href="javascript:setRequest('02')">Susi</a></li>
<li><a id="source_03" href="javascript:setRequest('03')">Charly</a></li>
</ul>
<br />
<div id="content"></div>
</body>
</html>
Der komplette Code (PHP-Script):
<?php
header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');
$name = strtoupper($_POST['name']);
$pos = $_POST['pos'];
echo $name." steht an Position ".$pos;
?>
Das Script in Aktion:
der angeklickte Name und die Position werden hier angezeigt