Avatar billede laus0028 Nybegynder
20. maj 2009 - 22:01 Der er 5 kommentarer

Fejl i suggestscript

Hej alle eksperter,

Jeg har følgende script som jeg godt kan få til at virke i Chrome, Firefox, Safari men ikke IE7/IE8...

Scriptet skal funke som et suggest script hvor et inputfelt søger igennem min MySQL db når der skrives.
---------
Mit script er delt op i 3.

tmp_tilfoj_deltager.php // Her er HTML formularen
clienthint.js // Her er alt js'en
gethint.php // Her søger jeg igennem db'en samt laver en string som til printes tilbage til formularen.

----------
TMP_TILFOJ_DELTAGER.php :

<script src="./scripts/clienthint.js"></script>
<h2>Søgning</h2><p style='font-size: 8pt;' align=center ><input type="text" size=50 id="txt1" onkeyup="showHint(this.value, <?php echo $_GET[lobID]; ?>)" />
<span id="txtHint" style=""></span>

---------
CLIENTHINT.JS

var xmlhttp

function showHint(str, id)
{
if (str.length==0)
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support XMLHTTP!");
  return;
  }
var url="../scripts/gethint.php";
url=url+"?q="+str+"&lobID="+id;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
  {
  document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  }
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}

---------
GETHINT.PHP

<?php
header("Cache-Control: no-cache, must-revalidate");
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// Fill up array with names

include("../inc/db.php");
connect();

$q_navne = mysql_query("SELECT * FROM deltagere");
while($r_navne = mysql_fetch_assoc($q_navne)){
    $a[] = array( "navn" => utf8_encode($r_navne["fornavn"])." ".utf8_encode($r_navne["efternavn"]),
                  "id" => $r_navne["id"],
                  "fodt" => $r_navne["fodt"],
                  "adresse_adresse" => $r_navne["adresse_adresse"],
                  "adresse" => utf8_encode($r_navne["adresse_by"])." - ".$r_navne["adresse_postnr"]  );
}
//get the q parameter from URL
$q=$_GET["q"];


//lookup all hints from array if length of q>0

if (strlen($q) > 0)
  {
  $hint="";
 
 
  $array_q = $q;
  $array_q = explode(" ", $array_q);
  $array_q0 = $array_q[0]; // den er aktiv
  $array_q1 = $array_q[1]; // deaktiv
  $array_q2 = $array_q[2]; // deaktiv
 
  for($i=0; $i<count($a) AND $i < 11; $i++)
    {
    $ID_l = $a[$i]["id"];
    $link = "java script:popUp('./popup/tilfoj_distance.php?deltagerID=".$a[$i]["id"]."&lobID=$_GET[lobID]')";
    $vistilmelding = "<div><b>Født:</b> ".$a[$i]["fodt"]."<br><b>Adresse:</b> ".$a[$i]["adresse_adresse"].", ".$a[$i]["adresse"]."</div>";
    $knap = "<a onmouseover='ReverseContentDisplay('uniquename$ID_l'); return true;' href=java script:ReverseContentDisplay('uniquename$ID_l')
          style='color: green; text-decoration: none;' ><img src='./images/icons/magnifier_zoom_in.png' > </a> ";
 
    if ( preg_match("/$array_q0/i", $a[$i]["navn"]) )
      {
      $hint= ($hint."<div style='height:20px; vertical-align:top;' >
                      ".$knap." <a href=$link >".$a[$i]["navn"]." (".$a[$i]["adresse"].")</a></div>
                    <div id=uniquename".$ID_l." class=hint >  ".$vistilmelding."</div>");
      }
    }
  }

// Set output to "no suggestion" if no hint were found
// or to the correct values
$link_ny = "java script:popUp('./popup/tilfoj_deltager.php?lobID=$_GET[lobID]')";
   
if ($hint == "")
  {
  $response="<input value='Opret ny bruger' type=button onclick=$link_ny >";
  }
else
  {
  $response=$hint;
  }

//output the response
echo $response;
?>
Avatar billede ebusiness Nybegynder
24. maj 2009 - 12:48 #1
Har du lagt det op på en server? IE vil ikke acceptere at du åbner en lokal url.
Avatar billede laus0028 Nybegynder
25. maj 2009 - 21:12 #2
Ja den ligger på min server, eller får den hosted hos Servage.net :) vil ikke accepterer en lokal url? hvad kan jeg gøre ved det?
Avatar billede ebusiness Nybegynder
25. maj 2009 - 22:57 #3
Jeg tror mit gæt var galt så.

Præcis hvordan er din filstruktur? Jeg synes kombinationen af <script src="./scripts/clienthint.js"> og url="../scripts/gethint.php"; forekommer lidt underlig. Hvis ikke det leder dig nærmere må jeg jo prøve at sætte et testmiljø op.
Avatar billede laus0028 Nybegynder
26. maj 2009 - 17:14 #4
Nu har jeg prøvet at trække det hele ud så det er "flad" struktur.. det er stadig samme problem. IE melder fejl ved:

document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
Avatar billede ebusiness Nybegynder
26. maj 2009 - 18:36 #5
Jeg satte frontend koden op i mit eget testmiljø, det virkede fint med min IE7.

Prøv at få koden til at vise xmlhttp.statusText i stedet for xmlhttp.responseText, måske er der en fejlmeddelselse som kan bringe os lidt nærmere.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester