20. juli 2009 - 18:08Der er
18 kommentarer og 1 løsning
Problemer med at poste data.
Jeg har det meste af nedenstående stykke kode, fra det hæfte der hedder Ajax af Phil Ballard, men jeg kan ikke få det til at virke, nogen der kan hjælpe mig med hvor jeg går galt i byen? Derudover, vil man bare kunne ændre GET til POST i "mitReq.open("GET", url, true);" da jeg ikke er så meget for at smide alting ind som GET?
<script type="text/javascript"> function getXMLHTTPRequest() { var req = false; try { req = new XMLHttpRequest(); } catch(fejl1) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(fejl2) { try { req = new ActiveXObject(Microsoft.XMLHTTMP); } catch(fejl3) { req = false; } } } return req; }
var mitReq = getXMLHTTPRequest(); function kaldAjax() { var test = \'tekst\'; var url = "index.php?post=" + test; mitReq.open("GET", url, true); mitReq.onreadystatechange = svarAjax; document.write("Det virker"); mitReq.send(null); } </script> <FORM method="POST" name="ajax" action=""> <INPUT type="BUTTON" value="Submit" ONCLICK="kaldAjax()"> </FORM>
glemte svarajax. Den er bare function svarAjax() { java script:alert("SvarAjax"); } Kan stadig ikke få det til at virke, har lagt det op på http://vilibellus.dk/facebook/test.php, der sker intet når jeg trykker på submit.
Det fordi jeg sad og prøvede at pille ved det, har droppet den bog jeg havde fundet, selv ikke koden fra deres hjemmeside virkede. Jeg har prøvet at pille lidt ved det efter nogle tutorials jeg fandt. Men den retunerer stadig ikke noget, jeg troede at når man lavede det som nedenstående så ville den udskrive test fordi validate var blevet kørt og "data indsat" fordi der var lavet replace. <?php function validate($name) { //mysql_query("INSERT INTO table (id) VALUES ('".$name."')") OR DIE (mysql_error()); echo "test"; } if(isset($_REQUEST['q'])) { echo validate(trim($_REQUEST['q'])); }; ?> <script type="text/javascript"> function getHttpObject() { if (window.XMLHttpRequest) return new XMLHttpRequest(); if (!window.ActiveXObject) return null; var a = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; var o = null; for (var i=0,j=a.length; i<j; i++) { try { if ( o=new ActiveXObject(a[i]) ) return o; } catch(e){}; } return a = o = null; } function insert() { http.abort(); http.open("GET", "test.php?q=1", true); http.onreadystatechange=function() { if(http.readyState == 4) { document.getElementById('foo').innerHTML = "data indsat!"; } } http.send(null); }
olebole - altså du vil have jeg skal lave escape string først eller hvad mener du? splazz - altså sådan at jeg har nedenstående eller hvordan? function insert() { http.abort(); http.open("POST", "ajax.php", true); http.onreadystatechange=function() { if(http.readyState == 4) { document.getElementById('foo').innerHTML = "data indsat!"; } } http.setRequestHeader("Content-Length", params.length); var params = 'q=1'; http.send(params); } for der sker stadig ikke noget.
der sker stadig ikke noget, den ændrer ikke teksten til data indsat og de ting der ligger i ajax.php bliver ikke kørt http://vilibellus.dk/facebook/test.php
Hvis du ikke har slået fejlmeldinger fra i din browser - og det har du selvfølgelig ikke, når du udvikler - får du at vide, at http ikke er defineret i linje 25.
Det virker, hvis du erklærer http som global variabel og skriver:
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.