Dooling Posted August 6, 2008 Report Posted August 6, 2008 Forma tiek ielādēta ar AJAX palīdzību. Formā lietotājs veic izmaiņas un saglabā. Update Mysql tabulā notiek, bet pēc update AJAX neielādē laboto saturu, tikai pēc atkārtotas formas atvēršanas labotā informācija tiek ielādēta. Kāpēc tā? Zemāk ir parādīti kods: update.php <?php seit izpildas mysql update, kad tiek labota forma ?> <script language="JavaScript" src="js/functions.js?<?php echo time(); ?>"></script> <script language="JavaScript" src="js/calendar.js"></script> <img src="pic/t.gif" width="1" height="1" border="0" onLoad="LoadCheck('<?php echo $aid; ?>', '<?php echo $user_id; ?>', '<?php echo $type; ?>');" /> <div id="saturs"></div> functions.js function LoadCheck(aid, anketetajs, type) { var ajaxRequest; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); } catch (e) { // Internet Explorer Browsers try { ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("Jūsu internetpārlūkprogramma neatbalsta AJAX!"); return false; } } } // Create a function that will receive data sent from the server ajaxRequest.onreadystatechange = function() { if(ajaxRequest.readyState == 4) { var ajaxDisplay = document.getElementById('saturs'); ajaxDisplay.innerHTML = ajaxRequest.responseText; } else { var ajaxDisplay = document.getElementById('saturs'); ajaxDisplay.innerHTML = '<br /><br /><table align="center" style="color: red;"><tr><td><img src="pic/load.gif" width="14" height="14" alt="Lūdzu uzgaidiet" /></td><td>Lūdzu uzgaidiet! Notiek datu ielāde!!!</td> </tr></table>'; } } var aid = aid; var user = user_id; var type = type; var queryString = "?aid=" + aid + "&user_id=" + user_id + "&type=" + type; ajaxRequest.open("GET", "include/LoadContent.php" + queryString, true); ajaxRequest.send(null); }
andrisp Posted August 6, 2008 Report Posted August 6, 2008 (edited) A kur ir pats formas kods ? Bet vispār - AJAX izsauktais skripts visticamāk vienkārši neatgriež HTML vajadzīgo. Edited August 6, 2008 by andrisp
Dooling Posted August 6, 2008 Author Report Posted August 6, 2008 (edited) Lūk: <?php $user_id = trim($_GET['user_id']); $aid = trim($_GET['aid']); $type = trim($_GET['type']); include("conn.php"); ?> <form method="post" name="forma" action="update.php"> <table class="text" cellspacing="0" cellpadding="0" border="0" style="width:700px;"> <tr> <td > <?php $sql="SELECT * FROM table where aid = '$aid' and user_id = '$user_id' and type = '$type'"; $vaicajums=mysql_query($sql); $numrow = mysql_num_rows($vaicajums); while($row = mysql_fetch_array($vaicajums)) { $ok = $row["ok"]; $vertiba = $row["vertiba"]; $mid = $row["mid"]; $field_name = $row["field_name"]; $field_type = $row['field_type']; $j=$j+1; if($field_type=="1") { $lauka_tips = "<input type=\"text\" style='width: 250px' value=\"$vertiba\" name='$mid'/>"; } elseif($field_type=="2") { $lauka_tips = "<textarea rows=\"3\" cols=\"70\" name='$mid'>$vertiba</textarea>"; } echo "<TR> <TD width=\"200\" valign=\"top\">$field_name</TD> <td valign=\"top\">$lauka_tips</td> </TR>"; </table> <?php } ?> </td> </tr> </table> </form> Edited August 6, 2008 by Dooling
andrisp Posted August 6, 2008 Report Posted August 6, 2008 Lūdzu, pārliec visus tos kodus uz paste.php.lv. Grūti pētīt, ja jaskrollē.
Dooling Posted August 6, 2008 Author Report Posted August 6, 2008 Ieliku paste.php.lv: update.php functions.js Forma
Dooling Posted August 6, 2008 Author Report Posted August 6, 2008 Forma tiek ielādēta ar AJAX palīdzību. Sākumā atveras update.php un pēc submita arī tiek atvērta update.php lapa
andrisp Posted August 6, 2008 Report Posted August 6, 2008 Zini, parādi arī updeitošanas kodu visu (to, kas update.php sākumā). It kā tur vaina nevarētu būt, bet nu parādi.
andrisp Posted August 6, 2008 Report Posted August 6, 2008 (edited) Un iekš include/LoadContent.php ir tas formas kods, ja ? Ā, un kas īsti tiek atvērts "ajaxīgajā daļā" pēc submita ? Forma, bet ar vecajiem datiem ? Edited August 6, 2008 by andrisp
Dooling Posted August 6, 2008 Author Report Posted August 6, 2008 (edited) include/LoadContent.php - ir formas kods. Pēc submita tiek atvērta tā pati lapa un ajaxīgajā daļā atkal tiek ielādēta forma. Reizēm ir ka uzreiz pēc submita tiek ielādēti labotie dati, citreiz atverot no jauna tikai tiek ielādēti labotie dati, gadās arī ka divreiz ielādējot tiek ielādēti labotie dati. Varbūt kaut kas tiek iekešots un tāpēc dati neielādējas uzreiz pēc submita. Edited August 6, 2008 by Dooling
andrisp Posted August 6, 2008 Report Posted August 6, 2008 Nu spriežot pēc tava apraksta, tā arī izskatās, ka kaut kāds kešings notiek. Bet nu gļukains izklausās.
v3rb0 Posted August 6, 2008 Report Posted August 6, 2008 ja tiešam keša, tad url, ar kuru prasi jauno info klāt pieliec "foo="+Math.floor(Math.random()*10000000000)
Dooling Posted August 6, 2008 Author Report Posted August 6, 2008 Jā, tiešām informācija tika kešota. v3rb0 padoms līdzēja. Paldies ;)
Mr.Key Posted August 6, 2008 Report Posted August 6, 2008 vai arī skriptā, kas veic ajax pieprasījuma saņemšanu, pirmajā rindā: header('Cache: no-cache');
Recommended Posts