Tutorials
Zend data met Ajax
Deze korte tutorial is voor mensen die AJAX ook voor formulieren willen gebruiken. De functionaliteit is op te splitsen in: Javascript, Formulier en een post_ajax.php In het Javascript deel zijn drie gegevens belangrijk. 1. Het adres van post_ajax.php 2. Response, de tekst die je als resultaat wil teruggeven 3. myMessage, het element wat het resultaat zal ontvangen Er kan nog veel mee toegelicht worden, maar ik denk dat de files voor zich spreken. Suc6 Cees
Pagina 1
Script met Formulier
<html>
<head>
<script language="javascript">
/*
This is the script part, for posting values
Response is the text to supply to your user
MyMessage is a html element to recieve the response
*/
$input = function(text)
{
// Zo kan je gemakkelijk een html element aanspreken
return document.getElementsByTagName(text);
}
function sendForm(response) {
try {
//mydata is POST container
var mydata = '', name = '';
/**
* get all input values
*
**/
var inputs = $input('input');
for (var i = 0; i < inputs.length; ++i) { //this get all input types,
//except Textarea and Select
/*
prepared to use name or id of html element
*/
if (inputs[i].name) {
name = inputs[i].name;
} else if (inputs[i].id) {
name = inputs[i].id;
} else {
name = '';
}
if ((name!='')&&inputs[i].value) {
mydata += '&' + name + '=' + inputs[i].value;
}
}
/**
* get all selected values
*
**/
var inputs = $input('select');
/*
this function works NOT on multiple selections
Yet ...
*/
//alert(inputs.length);
for (var i = 0; i < inputs.length; ++i) {
//If you want you can loop thrue all options[] of active select element
mydata += '&' + inputs[i].name +
'=' + inputs[i].options[inputs[i].options.selectedIndex].value;
}
/**
* get all textarea values
*
**/
var inputs = $input('textarea');
for (var i = 0; i < inputs.length; ++i) {
mydata += '&' + inputs[i].name + '=' + inputs[i].value;
}
/**
* get a XMLHttpRequestobject
*
**/
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
/**
* Create onreadystatechange function
*
**/
xmlhttp.onreadystatechange = function () {
//Is it ready to send data
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//give your response
document.getElementById("myMessage").innerHTML = response; }
}
/**
* get remote URL, to execute POST values
* the file has to be there!
*
**/
var doNow = "post_ajax.php"
/**
* open Request
*
**/
xmlhttp.open("POST", doNow, true);
/**
* set some headers
*
**/
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length",mydata.length);
xmlhttp.setRequestHeader("Connection", "close");
/**
* send POST data
*
**/
//alert(mydata.length);
xmlhttp.send(mydata);
} catch (e) {
// display error message
alert("Error sending the response: " + e.toString());
}
}
</script>
<style TYPE="text/css" MEDIA=screen>
.warning {
background-color: orange;
color: white;
</style>
</head>
<body>
<div id="myMessage" class="warning"><!-- class is to alert your user //-->
</div>
<form id="mailfrm" name="mailfrm" action="javascript:sendForm('Uw formulier is verwerkt!')">
<input id="formname" name="formname" value="mailfrm" type="hidden">
<label for="name">
Gast naam:
</label>
<input id="name" name="name" title="Geef hier uw naam." size="25" value="Gebruiker">
<br>
<label for="mail">
Mailadres:
</label>
<input id="mail" name="mail" title="Geef hier uw mailadres." size="30" value="[email protected]">
<br>
<label for="subject">
Onderwerp:
</label>
<input id="subject" name="subject" title="Geef hier het onderwerp van uw bericht." size="40" value="Test Ajax">
<br>
<label for="message">
Bericht:
</label>
<textarea id="message" name="message" title="Type hier het bericht en/of opmerking die u wilt plaatsen." cols="40" rows="10">Super snel dataverwerking
</textarea>
<br>
<p align="center">
<button type="reset" value="reset" title="Herstel ingegeven waarden.">
Herstel
</button>
<button value="send" title="Verzend ingegeven waarden.">
Verzend
</button>
</p>
</form>
</body>
</html>
Pagina 2
post_ajax.php
<?php
/**
*
*
*/
$_POST;
//Hier kan de data verwerkt worden.
?>
Reacties
0