det eneste jeg har fået lavet en lidt mindre er istancieringen af xmlHttp objektet. jeg kunne også godt tænke på at hele requesten lå i en funktion som jeg bare kunne kalde også få returneret svaret (responseText), f.eks.:
var response = ajaqReq(sUrl, sParams);
det har jeg egentlig også:
function ajaxReq(sUrl, sParams){ var url = sUrl; var params = sParams; var xmlHttp = new xmlHttpObject();
men denne funktion er ikke særlig asynkron, og så vidt jeg har forstået det, der hvor jeg fandt dette eksempel (kan selvfølgelig ikke huske hvor), skulle det være sådan for at det kunne virke. funktionen er egentlig fin nok, men da jeg gerne vil sætte indholdet i en div i starten af requesten (en gif der viser der sker noget) inden requesten starter og ændre indholdt igen efter requesten skal det være asynkron ellers virker det ikke (og der er vel heller ikke meget ajax over det hvis det ikke er asynkron?)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Jeg har selv gjort det, at jeg har lavet en funktion, som bygger xmlHTTP-objektet. Den kalder jeg f.eks. med AjaxConn(); Så laver jeg manuelt onreadystatechange-funktionen. Og så kører jeg en funktion kaldet AjaxSend("urladresse.asp"); som sørger for at hente siden - dvs. ligesom din ajaxReq()-funktion, bare uden return'en.
På den måde har jeg fuld kontrol over, hvad der skal ske, når den finder eller ikke finder de ønskede data.
I øvrigt bør du ikke hente i ren HTML-form, men derimod i XML eller JSON, da det vil gå meget hurtigere. Og på den måde vil du også kunne slippe for at bruge innerHTML.
document.getElementsByTagName("body")[0].style.cursor="progress"; AjaxConn(); req.onreadystatechange=function(){ if(req.readyState==4){ if(req.status==200){ var json=eval("("+req.responseText+")"); alert(json.items) }else{ alert("Data kunne ikke hentes!\n\nDer opstod en fejl "+req.status+"!") } req=null; document.getElementsByTagName("body")[0].style.cursor="default" } } AjaxSend("json/showitems.asp","")
Så har jeg mit Ajax-objekt (her kaldet req i stedet for xmlHttp) i funktionen AjaxConn() og i funktionen AjaxSend() bliver URL'en kaldt og der sættes hvad der nu skal sættes af mime-type og parametre.
Onreadystatechange-funktionen har jeg så ikke skrevet ind i nogen funktion, for at have meget bedre kontrol over, hvad der gøres.
Det gør det også meget lettere at undgå innerHTML. F.eks. hvis du skal indsætte 3 div'er på din side, så i stedet for at overføre hele HTML-koden, så overfører man kun det tekstindhold, som skal smides i div'erne. Det vil også gøre, at det bliver meget hurtigere udført.
Og hvis du skal overføre tekster med f.eks. æ,ø,å eller andre specialtegn, skal du lige pakke det ind i en CDATA-node.
så fik jeg det til at spille med kna så meget kode hver gang jeg laver en request :)
nu har jeg så bare problemer med at få mit indhold tilbage som xml, men det opretter jeg lige et nyt spørgsmål til, da det egentlig ikke er det, dette spørgsmål handler om.
smid et svar w13, det var dejligt du ville hjælpe :)
nå jeg prøvede lige din json-løsning osse da jeg synes xml virkede meget omfattende i forhold til, når, som du osse sagde, kun er et par værdier pr "række".
jeg var dog nødt til at rette
if(!$i){echo ",";}
til:
if($i!=0){echo ",";}
ellers skrev den et komma første gang den kørte wile-løkken, hvilket også giver mening da $i jo bliver sat før løkken.
men det virker, og jeg tror at json bliver løsningen for dette projekt.
Det lyder ikke, som om du har tegnsætproblemer ... du har tegnsætproblemer! =)
Du skal sørge for, at:
*) alle dine filer er gemt som utf-8 (check evt i Notepad's 'Gem Som' dialog *) du bruger en utf-8 meta i alle dine HTML-dokumenter *) du med PHP sætter en utf-8 Content-Type header i alle dokumenter
Husk også, at feltnavne i en HTTP-header er case-sensitive (stort 'T') - og husk tegnsættet: xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
kører p.t. PHP4 og bruger en JSON klasse til at generere JSON formatet. Mit array ser fint ud inden det kommer igennem JSON.
Dog er jeg i gang med at flytte projektet over på PHP5/MySQL5 så jeg selv kan styre "Collation" på mine tabeller. Så er jeg da sikker på det ikke er der problemet opstår.
Er lidt i tvivl med xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
Dén JSON-streng holder ikke som utf-8. Der står f.eks: {"varenr":"11","navn":"K\u0072006500740069mer-udg\u00650074" ... }
- men der burde stå: {"varenr":"11","navn":"K\u00f8retimer-udg\u00e5et" ... }
Hvis du kører PHP5, skal du ikke bruge en JSON-klasse, men PHP's egen funktion json_encode. Du må heller ikke bruge nogen former for anden encoding af teksterne
Det indhold, der ligger i databasen er sikkert ANSI, indsat af et dokument, der ikke er gemt som utf-8 - og/eller hvor der ikke bruges en utf-8 meta - og/eller som serveren ikke sender som utf-8 (kan som bekendt ordnes med en Content-Type header).
Dog er data ikke læsbare i PhpMyAdmin. Er nok min udbyder der ikke har helt styr på setuppet :-)
Takker MANGE GANGE for hjælpen. Så kan jeg endelig komme i gang med projektet.
_________________________________________________
Kunne godt bruge noget hjælp til udviklingen hvis det skulle have interesse :-)
Projektet går ud på at overføre min "gamle" "shop admin" til extjs og samtidigt udvikle et MINI erp system til små og mellemstore virksomheder.
Da jeg selv er autodidakt er der en del områder jeg ikke er så skarp i. Men selve basen af applikationen er faktisk lavet. Det hele skal dog omskrives til noget fornuftigt kode.
Jeg ved ikke helt hvilken licens softwaren skal udgives som. Muligvis OpenSource GPL? Men hvis der kommer andre interesser ind over projektet, er det noget der naturligvis skal fastligges fra start.
Eneste krav jeg har til projektet er at det bygges op i JS,PHP, MySQL (InnoDB).
Kunne da være sjovt at få en / flere dygtige folk med fra start.
Synes godt om
Ny brugerNybegynder
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.