Richard87 Skrevet 31. mars 2007 Rapporter Del Skrevet 31. mars 2007 Hei, jeg har et merkeligt problem med ajax og POST... her er requesten (Sett fra FireBug:) function printpath path path path session session session session session 05urog1q9c3s2pm16lbri6g966 text title ajax.js og her er js function som sender dette: function print_remote() { filename = document.getElementById('info').filename.value; index = filename.lastIndexOf("\\"); filenm = filename.substr(index + 1); url = "ajax_post.php"; post = ""; post += "function="+encodeURI("print"); post += "&title="+encodeURI(filenm); post += "&session="+encodeURI(document.getElementById('info').session.value); post += "&text="+encodeURI(document.getElementById('text').value); xmlHttp = getXML(); xmlHttp.abort(); xmlHttp.onreadystatechange=print_remote_response; xmlHttp.open("POST",url,false); xmlHttp.overrideMimeType('text/html'); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.setRequestHeader("Connection", "close"); xmlHttp.send(post); } Noen som vet hvorfor dette skjer? Lenke til kommentar
Kagee Skrevet 31. mars 2007 Rapporter Del Skrevet 31. mars 2007 Kunne du forklare bug'en for oss som ikke bruke firefox(bug)? Evetuelt gi oss feilmeidngene fra Verktøy->Feilmeldinger Lenke til kommentar
Richard87 Skrevet 31. mars 2007 Forfatter Rapporter Del Skrevet 31. mars 2007 bug'en er at xmlHttp.send(post) sender ikke alt, den sender kun det som ble postet av firebug, det er buggen, og ergo vil ikke ajax_post skripte virke:( Noen ide hvorfor ikke alt blir sendt? Lenke til kommentar
Gjest Slettet+142 Skrevet 6. april 2007 Rapporter Del Skrevet 6. april 2007 jeg har lest litt rundt om ajax open-funksjonen.. et sted på denne siden, nevner de at når det tredje argumentet i open-funksjonen er satt til false, klikker firefox. og jeg skjønner igrunn ikke hva som er forskjellen på om den er true eller false det siste argumentet =/ Utdrag ifra siden jeg linken til over open() Function //By calling this file, we have saved the data. http.open("GET","save_data.php?comment=" + comment + "&email=" + email + "&return=none",true);Here, we are opening the connection to the server side scirpt using the XMLHTTPRequest object. We used the open() function. The three arguments for this function are... Method GET, POST or HEAD. This argument specify which method must be used in transporting the given data to the new file. Using the GET method, we will be able to pass the data to the server side script in the url itself - like this url.php?data=value. The POST method will send the data after the connection is opened. The HEAD method can be used to get the headers of the url without having to download the entire page. The method can be specified as the fourth argument of the load function in jx. URL The URL of the file that must be opened - the location of the server side script. This can be a absolute URL like(http://www.openjs.com/feedback.php) or a relative one(../../feedback.php). A note of caution - this URL should be in the same domain as the script is. You cannot call a script in google.com from a script that is running in yahoo.com. This is a security measure implemented in most browsers to prevent XSS. Asynchronous/Synchronous This argument will be true if the request is asynchronous and false if it is synchronous. If it is Synchronous, the browser will suspend all activity till the response is received. This causes firefox to freeze up. Asynchronous requests don't have this problem - they will download the new page in the background - allowing the user to do other things. Lenke til kommentar
Kagee Skrevet 7. april 2007 Rapporter Del Skrevet 7. april 2007 (endret) Hvis 3dje argument i open er false, kan du jo droppe hele A'en i AJAX (Asynkron). Så klart firefox låser seg på en synkron request (false), alle gjør det - det er derfor vi bruker true (asynkron). Synkron: Last side Ajax request Vente på data Vente på data Vente på data Gjøre noe med dataene -Gjøre noe annet Asynkron: Last side Ajax request Når data er klare -> Gjør noe med datene -Gjøre noe annet -Gjøre noe annet -Gjøre noe annet Dataene klare -> Gjør noe med dataene -Gjøre noe annet "Gjøre noe annet" gjelder ikke bare JS, når du bruker synkron overføring låser hele nettleseren seg. Antagelig. Endret 7. april 2007 av Kagee Lenke til kommentar
Richard87 Skrevet 8. april 2007 Forfatter Rapporter Del Skrevet 8. april 2007 (endret) takker for svar, mekrelig at ff skulle klikke fordet:( men men.. [EDIT] har endret alle xmlHttp.open kallene til async nå, men det var ingen forandring:( Noen andre ideer? ps. her er koden: Klikk for å se/fjerne innholdet nedenfor function print_remote() { filename = document.getElementById('info').filename.value; index = filename.lastIndexOf("\\"); filenm = filename.substr(index + 1); xmlHttp = getXML(); xmlHttp.abort(); xmlHttp.onreadystatechange=print_remote_response; xmlHttp.open("POST","ajax_post.php", true); xmlHttp.overrideMimeType('text/html'); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.setRequestHeader("Connection", "close"); post = ""; post += "function="+encodeURI("print"); post += "&title="+encodeURI(filenm); post += "&session="+encodeURI(document.getElementById('info').session.value); post += "&text="+encodeURI(document.getElementById('text').value); xmlHttp.send(post); } Endret 8. april 2007 av Richard87 Lenke til kommentar
Gjest Slettet+142 Skrevet 8. april 2007 Rapporter Del Skrevet 8. april 2007 (endret) du er sikker på at ajax_post.php skriver ut det den skal? at den behandler requesten? da kan du iaf skille ut om det er noe gale med ajax eller om det er php. evt kan du kjøre en "alert(post);" før du kjører "xmlHttp.send(post)" og se hva som kommer opp Endret 8. april 2007 av Slettet+142 Lenke til kommentar
Richard87 Skrevet 9. april 2007 Forfatter Rapporter Del Skrevet 9. april 2007 har gjort det, og alt kommer opp, men i php skriptet får jeg feilmelding fordi ikke all informasjonen er der,den returnerer "POST Function Not Registered! (LoadFunction)" <-- som jeg tipper er den gamle funksjonen som ble sendt, her er ajax_post.php: Klikk for å se/fjerne innholdet nedenfor <?php include_once('functions.php'); if (session_id() == "") { session_start(); session_id($_POST['session']); } if (auth($_SESSION['user'], $_SESSION['md5']) == 1) { $fn = str_replace("\\\\", "\\", $_POST['filename']); switch ($_POST['function']) { case "savefile": $fh = fopen ($fn,"w+"); if (fwrite($fh, $_POST['text']) == false) { echo $_POST['filename']; } else { echo "successful\n"; } fclose($fh); break; case 'print': debugprint("Printing..."); $ph = printer_open("\\\\BLACKHAWK\\SamsungM"); debugprint("PV: ".printer_get_option($ph, PRINTER_DRIVERVERSION)); debugprint("PH: ".$ph); printer_start_doc($ph, $_POST['title']); printer_start_page($ph); printer_set_option($ph, PRINTER_TITLE, $_POST['title']); printer_set_option($ph, PRINTER_MODE, "RAW"); //printer_write($ph, $_POST['text']); printer_write($ph, "data fdsjflgksjlfdjøgk"); printer_end_page($ph); printer_end_doc($ph); printer_close($ph); debugprint("Finnished Printing"); echo "successful\n"; break; default: echo "POST Function Not Registered! (".$_POST['function'].")"; break; } } else { echo "Not Authenticated!\n"; } ?> (btw, selve printingen fungerer ikke, men den burde printet ut "successful\n") Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå