לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 27-01-2007, 17:27
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
AJAX לא פועל היטב - אין החלפה של טקסט לאחר טעינה ראשונה

לקחתי קוד מאוד פשוט שאמור לשים בתוך DIV טקסט מסויים מקובץ שנקרא Try.php. הקוד נלקח מ-w3schools:

קוד:
<div id='BLAM' style='background-color:black;color:white;'>Some default text</div> <script type='text/javascript'> var xmlhttp function loadXMLDoc(url) { xmlhttp=null // code for Mozilla, etc. if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest() } // code for IE else if (window.ActiveXObject) { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP") } if (xmlhttp!=null) { xmlhttp.onreadystatechange=state_Change xmlhttp.open("GET",url,true) xmlhttp.send(null) } else { alert("Your browser does not support XMLHTTP.") } } function state_Change() { // if xmlhttp shows "loaded" if (xmlhttp.readyState==4) { // if "OK" if (xmlhttp.status==200) { document.getElementById('BLAM').innerHTML = xmlhttp.responseText } else { alert("Problem retrieving XML data") } } } loadXMLDoc('Try.php'); </script>


קוד פשוט, בדקתי שאין בו שגיאות תחביר כמו סוגריים לא במקום וכדו'.

זה הקוד שיש בקובץ Try.php:
קוד PHP:
<?

echo 'Replace';

?>


ד"א, בהתחלה זה היה
קוד PHP:
 echo 'YAY'


על הטעינה הראשונה של העמוד שיש בו את קוד ה-AJAX, זה עבד מצוין והביא לי את הטקסט "YAY" לתוך ה-DIV.
בטעינות שלאחר הטעינה הראשונה זה לא טען את הטקסט "Replace" מהקובץ Try.php ונשאר ב-DIV הטקסט "YAY". שום דבר לא השתנה.

מה יכולה להיות הבעיה? אני משתמש בתוכנת שרת שנקראת WAMP5:
http://www.wampserver.com
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 29-01-2007, 21:37
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
בתגובה להודעה מספר 4 שנכתבה על ידי DCD שמתחילה ב "ניסיתי וזה לא עזר.. אני רואה..."

אחלה זה הצליח, תודה.

השתמשתי בפיתרון של לשים את הקוד הבא בקובץ PHP:
קוד PHP:
 header"Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
header"Last-Modified: " gmdate"D, d M Y H:i:s" ) . " GMT" ); 
header"Cache-Control: no-cache, must-revalidate" ); 
header"Pragma: no-cache" ); 


אבל עכשיו יש בעיה אחרת, כשאני כותב echo 'php'; לדוגמא, זה לא מוציא את הקוד.
זה מוציא את הקוד לפלט רק מתי שאני כותב את ה - echo באזור הראשון של קוד ה-PHP...כאילו האזור השני לא מזוהה.

זה הקובץ, לדוגמא:

קוד PHP:
<?php
header
"Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
header"Last-Modified: " gmdate"D, d M Y H:i:s" ) . " GMT" ); 
header"Cache-Control: no-cache, must-revalidate" ); 
header"Pragma: no-cache" );

echo 
'text11';

?>
text2
<?

echo 'Unprinted';

?>

text33

אז הקוד שנמצא כאן:

קוד PHP:
<?

echo 'Unprinted';

?>

לא פועל, המילה 'Unprinted' אינה מודפסת..זה לא מתייחס לזה כקוד PHP. מדוע?
עריכה:

צריכה לכתוב "php" אחרי הסימן שאלה =\ . חשבתי שאיך שכתבתי זה קיצור דרך שאמור לפעול...
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 30-01-2007, 20:00
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
בתגובה להודעה מספר 10 שנכתבה על ידי maxim k שמתחילה ב "דבר ראשון...אם מדובר בסתם..."

זהו שזה לא פונקציה גלובאלית ואני לא רוצה שזו תהיה אחת כזו.

זה הקוד של ה"מחלקה" ב-JS (תעתיקו ל-Notepad את הקוד, זה יותר נוח לקרוא ככה):


קוד:
function xmlhttp() { this.xmlHttp=null; this.useHeader = ''; } xmlhttp.prototype.GetXmlHttpObject = function() { try { this.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); /* For IE v6+ */ } catch(e) { try { this.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); /* For IE v5.5+ */ } catch(e) { } } if (this.xmlHttp==null) { this.xmlHttp=new XMLHttpRequest(); /* For the newer versions of Firefox, Mozilla, Safari, Netscape and Opera */ } return this.xmlHttp; } xmlhttp.prototype.stat = function() { if ((this.xmlHttp.readyState==4 || this.xmlHttp.readyState=="complete") && this.xmlHttp.status==200 ) return TRUE; return FALSE; } xmlhttp.prototype.go = function(URL, toDo, meth) { WebBaseURL = ''; var method = (meth == 'post' ? 'POST' : 'GET'); var url = URL ? WebBaseURL+URL : WebBaseURL; this.xmlHttp.onreadystatechange = toDo; this.xmlHttp.open(method,url,true); this.xmlHttp.send(null); } xmlhttp.prototype.reply = function() { return this.xmlHttp.responseText; }


זה הקוד HTML שמנסה להפעיל את המחלקה והפונקציות שבה ולמעשה לעשות xmlHttp request:

קוד:
<div id='BLAM' style='background-color:black;color:white;'>vcf</div> <script src="scripts/xmlHTTPRequest.js" type='text/javascript'></script> var do_func = function() { if (obj.stat) document.getElementById('BLAM').innerHTML = obj.reply; } obj = new xmlhttp(); obj.go('Try.php', do_func);


וזה הקוד בקובץ Try.php:

קוד PHP:
<?php
header
"Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
header"Last-Modified: " gmdate"D, d M Y H:i:s" ) . " GMT" ); 
header"Cache-Control: no-cache, must-revalidate" ); 
header"Pragma: no-cache" );

echo 
'text11';

?>
text2
<?php

echo 'Something';

?>

text33
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 03-02-2007, 17:53
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
בתגובה להודעה מספר 13 שנכתבה על ידי Silver Strike שמתחילה ב "אמנם לא עברתי על כל הקוד..."

צודק, העברתי לאותיות קטנות.

וזו הייתה טעות גדולה שלי - לא כתבתי את הקוד סביב תגי script מתאימים (חשבתי שהקוד היה בתוך התגי script, מה שלא היה נכון)

אח"כ בדקתי ובדקתי שוב, תיקנתי מספר דברים והגעתי לתוצאה הנכונה - זה מציג לי עכשיו את הפלט הנכון:

ציטוט:
text11text2 Something text33


עכשיו יש רק עוד בעיה אחת (לפחות בינתיים...) - זה כותב לי שגיאת JS, השגיאה היא:
ציטוט:
The data necessary to complete this operation is not yet available


אני יודע שזה קשור ל:
קוד:
this.xmlHttp.responseText


אבל לא מבין מה לא טוב מאחר והשתמשתי ב:

קוד:
(this.xmlHttp.readyState==4 || this.xmlHttp.readyState=="complete") && this.xmlHttp.status==200


עריכה:
הבנתי גם את הפיתרון לזה...הייתי צריך לשים סוגריים ב:
קוד:
obj.stat()

נערך לאחרונה ע"י DCD בתאריך 03-02-2007 בשעה 18:09.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #15  
ישן 03-02-2007, 21:33
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
בתגובה להודעה מספר 14 שנכתבה על ידי DCD שמתחילה ב "צודק, העברתי לאותיות..."

הקפצה אחרונה רק שיחסית היא גם קצת חשובה:

לפי דף הפיתרונות לבעיה הראשונית שלי באשכול זה ש-maxim k הביא, פתרתי רק בדרך אחת את הבעיה - ע"י הוספת הקוד PHP בתחילת הקובץ (קביעת header'ים לקובץ):

קוד PHP:
 header"Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching 
header"Last-Modified: " gmdate"D, d M Y H:i:s" ) . " GMT" );  
header"Cache-Control: no-cache, must-revalidate" );  
header"Pragma: no-cache" ); 


אח"כ כשבטעות עשיתי שגיאה בקוד PHP כשרציתי שוב לעשות xml Http requerst, התקבלה הודעת השגיאה האוטומטית ש-PHP מביא. ואחרי שתיקנתי את הקוד PHP ורציתי לעשות שוב xml Http requerst, שמתי לב שהדף אינו מתעדכן כמו שצריך (לא מתקבל הטקסט הנכון שאמור להתקבל מקובץ ה-PHP) וזה בגלל שכשמתי שהשגיאה בוצעה, לא נקבעו header'ים לדף (בגלל שהקוד בקובץ לא היה נכון והוא לא החשיב שום דבר מהקוד).
לכן הפיתרון לדבר זה להשתמש בעוד אחד מהפיתרונות (אפשר גם יותר) שהוצעו בדף ש- maxim k כתב, אני השתמשתי ב:

קוד:
req.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );


וב:

קוד:
req.open( "GET", "xmlprovider.php?sid=" + Math.random());



עריכה:
ועוד שאלה שמעניינת אותי - אם אני משתמש במתודת POST לשליחת הנתונים, אני יכול וצריך לשלוח את הנתונים כמו ששולחים במתודת GET?
למשל:
קוד:
http://www.domain.com/index.php?id=5&amp;some=word&amp;another=etc


???

(ה- &amp; הוא בשביל xhtml תקין)
עריכה 2:
עכשיו ניסיתי עם ה-&amp; וזה לא עובד איתו...צריך פשוט לכתוב & וזהו

נערך לאחרונה ע"י DCD בתאריך 03-02-2007 בשעה 21:47.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #18  
ישן 04-02-2007, 01:52
  משתמש זכר Silver Strike Silver Strike אינו מחובר  
 
חבר מתאריך: 10.09.04
הודעות: 1,032
שלח הודעה דרך ICQ אל Silver Strike שלח הודעה דרך MSN אל Silver Strike
בתגובה להודעה מספר 17 שנכתבה על ידי DCD שמתחילה ב "אז אתה מתכוון שאני צריך..."

קוד PHP:
 <script type="text/javascript">
//<![CDATA[
if(&& 1274){
    
alert("CDATA");
}
//]]>
</script> 

בקוד (שאין סיכוי שהוא יעבוד ) יש לך שלושה תווים בעייתיים:


  • גדול מ- (<)
  • קטן מ- (>)
  • ו- (&)
כדי שהוולידטור של w3c לא ינסה להתאבד על הדף שלך וכדי למנוע בעיות רינדור (טרם נתקלתי בתופעה כזו) אתה מוסיף את הצהרת ה-CDATA לפני ובסיום הקוד.

עם אתה עובד עם XML - יש לזה הרבה יותר משמעות. ולכן השימוש ב-CDATA מאוד נפוץ שם.
בעקרון, לאלמנטים בעץ ה-DOM יש Node (ואני לא אתרגם את המונח לעברית) שמאופיין כ-CDATA.

אם אתה עושה משהוא כזה:
קוד PHP:
 node document.getElementsById("oDiv").childNodes;
for(var 
i=0len=node.lengthitemi<lenitem=node[++i]){
    
alert(item.nodeType);


יחזרו אליך מס' הודעות alert עם הערך של ה-node אליו אתה פונה. CDATA הינו מס' 4. יקפצו לך עוד מס' פעמים הערות שמצביעות על חלק אחר במבנה האלמנט כגון: 3 עבור text# ו-1 עבור הפניה לאלמנט עצמו.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


נערך לאחרונה ע"י Silver Strike בתאריך 04-02-2007 בשעה 01:59.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 03:07

הדף נוצר ב 0.08 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר