It appears you have not yet registered with DEVPPL. To register please click here... (it's fast, easy and free!)

Forum

Log In Sponsors
Board index Programming JavaScript Forum

xmlHttpRequest returns unexpected results

xmlHttpRequest returns unexpected results

Postby aanders1977 on Sat Aug 16, 2008 9:25 am

I've coded quite much using VBA earlier, but I am now trying to "translate" my MS Access database project to be web-based. I am using php, MySql and JS to achieve this. I am pretty new to all these technologies.

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&oslash;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)">&nbsp;
<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
aanders1977
 
Posts: 2
Joined: Thu Aug 14, 2008 5:50 pm

Who is online

Users browsing this forum: No registered users and 5 guests