First of all, I have a form page called customerform.php. The page contains a form with several AJAX requests, one of them is that when the user types his postal code, his postoffice is returned from a database when he moves on to the next field in the form. This works fine, however, when the form is submitted to newcustomer.php using AJAX, xmlHttp.responseText still returns the customers postoffice, instead of the response I've written in newcustomer.php.
The strange thing is that I also have a query for adding the form data to a database in newcustomer.php, and the query is executed. I'm thinking that the responsetext from newcustomer.php is somehow overrided by the javascript, but I am unable to find the error.
Help is greatly appreciated!
customerform.php: (I'm mostly using Norwegian names for things)
- Code: Select all
<?php
/**
* @author Anders
* @copyright 2008
*/
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="author" content="Anders">
</head>
<body>
<p><b>Legg til ny kunde</b></p>
<form>
<table>
<tr><td>Søk</td><td><input size="50" type="text" maxlength="50" name="frmSok" title="Sok"></td></tr>
<tr><td>Kundenavn</td><td><input size="50" type="text" maxlength="50" id="idNavn" name="frmKundenavn" title="Kundenavn" onchange="Alfasort(this.id)"></td></tr>
<tr><td>Alfasortering</td><td><input size="50" type="text" maxlength="50" id="idAlfa" name="frmAlfasort" title="Alfasortering"></td></tr>
<tr><td>Adresse</td><td><input size="50" type="text" maxlength="50" name="frmAdr" title="Adresse"></td></tr>
<tr><td>Adresse 2</td><td><input size="50" type="text" maxlength="50" name="frmAdr2" title="Adresse 2"></td></tr>
<tr><td>Postnr</td><td><input size="8" type="text" maxlength="8" id="idPnr" name="frmPostnr" title="Postnr" onchange="Hentpoststed(this.id)">
<input size="36" type="text" maxlength="39" id="idPsted" name="frmPoststed" title="Poststed" disabled></td></tr>
<tr><td>Telefon</td><td><input size="20" type="text" maxlength="20" name="frmTlf" title="Telefon" onkeydown="Deaktiver()"></td></tr>
<tr><td>Mobil</td><td><input size="20" type="text" maxlength="20" name="frmMob" title="Mobil"></td></tr>
<tr><td>Telefon jobb</td><td><input size="20" type="text" maxlength="20" name="frmTlfjobb" title="Telefon jobb"></td></tr>
<tr><td>Epost</td><td><input size="50" type="text" maxlength="50" name="frmEpost" title="Epost"></td></tr>
<tr><td></td><td><input type="button" value="Legg til" onclick="Kundesubmit(this.form)"></td></tr>
</table>
</form>
</body>
</html>
Javascript:
- Code: Select all
var xmlHttp
function GetXmlHttpObject()
{
var xmlHttp = null;
try
{
// Firefox, Opera 8.0 + , Safari
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
function Hentpoststed(x) //Get postal office
{
var q = document.getElementById(x).value;
xmlHttp = GetXmlHttpObject()
if (xmlHttp == null)
{
alert ("Browser does not support HTTP Request")
return;
}
var url = "hentpoststed.php"
url = url + "?q=" + q
url = url + "&sid=" + Math.random()
xmlHttp.onreadystatechange = stateChangedE
xmlHttp.open("GET", url, true)
xmlHttp.send(null)
}
function stateChangedE()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
{
document.getElementById("idPsted").value = xmlHttp.responseText
// Hvis man forsøker å sette inn et ukjent eller utenlandsk poststed, så må poststed - feltet aktiveres
if (xmlHttp.responseText.length < 1)
{
document.getElementById("idPsted").disabled = false;
}
}
}
function Deaktiver()
{
document.getElementById("idPsted").disabled = true;
}
function Kundesubmit(f)
{
var xmlReq = null;
var str = getFormValues(f);
xmlReq = getXML(str);
}
function getXML(str)
{
var xmlHttp = null;
xmlHttp = GetXmlHttpObject();
if (xmlHttp == null)
{
alert ("Browser does not support HTTP Request")
return;
};
var url = "newcustomer.php";
url = url + "?" + str;
url = url + "&sid=" + Math.random();
xmlHttp.onreadystatechange = stateChangedNy();
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function stateChangedNy()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
{
// The following line returns the response from the previously executed reqeust
document.getElementById("knavn").innerHTML = xmlHttp.responseText;
}
}
newcustomer.php:
- Code: Select all
<?php
/**
* @author Anders
* @copyright 2008
*/
header("Content-type: text/xml");
//Check if the user are logged in. If not, show the login screen.
include ("checklogin.php");
$kundenavn = $_GET['frmKundenavn'];
$alfa = ($_GET['frmAlfasort']);
$adr = $_GET['frmAdr'];
$adr2 = $_GET['frmAdr2'];
$postnr = $_GET['frmPostnr'];
$tlf = $_GET['frmTlf'];
$mob = $_GET['frmMob'];
$tlfjobb = $_GET['frmTlfjobb'];
$epost = $_GET['frmEpost'];
//Writes the information to the database
mysql_query("INSERT INTO `Kundebase` (Kundenavn, Fornavn, Adresse, Adresse2, Postnr, Telefon, Mobil, `Tlf jobb`, Epost) VALUES ('$kundenavn', '$alfa', '$adr', '$adr2', '$postnr', '$tlf', '$mob', '$tlfjobb', '$epost')");
echo "<?xml version='1.0'?>";
echo "<?xml-stylesheet type='text/css' href='XMLstyles.css'?>";
echo "<XMLresultat>";
echo "<XMLkunde>" . $kundenavn . "</XMLkunde>";
echo "<XMLtest>En liten test</XMLtest>";
echo "<XMLadr>" . $adr . "</XMLadr>";
echo "<XMLadr2>" . $adr2 . "</XMLadr2>";
echo "<XMLpostnr>" . $postnr . "</XMLpostnr>";
//Hente riktig poststed
$sqlii = "SELECT Poststed FROM Poststeder WHERE Postnr = " . $postnr;
$poststed = mysql_query($sqlii);
$poststedii = mysql_fetch_row($poststed);
echo "<XMLpoststed>" . $poststedii[0] . "</XMLpoststed>";
echo "<XMLtlf>" . $tlf . "</XMLtlf>";
echo "</XMLresultat>";
?>
Kind regards,
Anders


