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

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



  #1  
ישן 14-06-2013, 03:20
צלמית המשתמש של linuxsboot
  linuxsboot linuxsboot אינו מחובר  
 
חבר מתאריך: 15.04.06
הודעות: 18,034
בעיה עם קוד של js בכל הדפדנים מופיעה אחרת

קוד:
<script language="JavaScript"> onload = function() { loaddefault("maindivsub1-2div","htmlbar.xml"); loaddefault("maindivsub2-2div","text.xml"); } function loaddefault(strid,strxmlstring) //function loaddefault(number) { /* var strid= new String; var strxmlstring = new String; if(number==1) { strid = "maindivsub1-2div"; strxmlstring = "htmlbar.xml"; } else if(number==2) { strid = "maindivsub2-2div"; strxmlstring = "text.xml"; } */ //alert(number); alert(strid); alert(strxmlstring); var stringurl = new String; stringurl= "loadphp.php?path="; //showxml(stringurl, strxmlstring, strid); //strid = ""; //strxmlstring = ""; /* delete strxmlstring; delete strid; delete stringurl; */ //} /* pringing the tags functions */ //function showxml(stringurl, strxmlstring , strid) //{ if (stringurl=="") { document.getElementById(strid).innerHTML="xml error"; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { if(xmlhttp.status==200) { document.getElementById(strid).innerHTML=xmlhttp.r esponseText; } } } xmlhttp.open("POST", stringurl + strxmlstring ,true); xmlhttp.send(1); } </script>

הקוד מעביר ערך מצד השרת לצד הלקוח והבעיה יכולה להיות בצד הלקוח או בכלל בצד השרת.

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

אם אני אבטל קריאה אחת ואבקש ממנו להדפיס רק את קריאה אחת מ 2 זה עובד מעולה.

כל הערות הקוד המבוטל זה נסיונות למצוא איפה הוא הבעיה וכולם נתנו את מה שרמשתי לכם לגבי ה ff, והמקרים האחרים של ה chrome והדפדנים האחרים.

קוד ה php:
קוד PHP:
<?php        
    
/*** create a SimpleXML object ***/
    
if( (! $xml simplexml_load_file($_REQUEST["path"]) ))
    {
        echo 
"Unable to load XML file";
    }
    else
    {
        
$i=0;
        
// categories -> items 
        
foreach($xml->children() as $items){
            echo (++
$i '<br />');
            
$str1 = ********************
            
$str2 = ********************
            
$str3 = ********************
            
$str4 $str1 $str2 $str3;
            echo (
$str4);
        }
    }
?>

הקוד php נמצא בדף אחר ומופעל דרך הצד לקוח ורק מעביר לצד לקוח מידע בלבד.
******************** מסתיר את התוכן שהקוד מדפיס, אבל זה עובד.

עריכה: כאשר אני מעתיק את כל הקוד ועושה פונקציה כפולה כאשר השם של אחת הוא:
קוד:
loaddefault1(strid,strxmlstring)

והשנייה
קוד:
loaddefault2(strid,strxmlstring)

ומשנה את ההפעלות ל:
קוד:
onload = function() { loaddefault1("maindivsub1-2div","htmlbar.xml"); loaddefault2("maindivsub2-2div","text.xml"); }

התוצאה גם זהה.
(לא דבר נכון לעשות אבל למען הבדיקה עשיתי את זה)

עריכה 2: הבעיה היא: xmlhttp
אם בקריאה ה 2 השם שלו אחר ההדפסה בסדר גמור בכל דפדפן.
מה הבעיה איתו ומדוע השיחרור שלו נכשל ואי אפשר להשתמש בו שוב?
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
will you marry me nesli barda? Operating system: Linux The day Microsoft & apple makes a product that does not suck will be the day they start making vacuum cleaners. say no to Apple&Facebook&MS&Samsung IL&Nokia&Hot&Yes,but say yes to Google


נערך לאחרונה ע"י linuxsboot בתאריך 14-06-2013 בשעה 03:47.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 14-06-2013, 08:17
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 1 שנכתבה על ידי linuxsboot שמתחילה ב "בעיה עם קוד של js בכל הדפדנים מופיעה אחרת"

אולי אתה יורה את בקשת ה xmlhttp השנייה לפני שהראשונה הסתיימה, ואז האובייקט נדרס...

בכל מקרה... למה ככה? למה אתה עושה שתי בקשות לשני קבצים באותה נשימה, אם ממילא אתה צריך את שניהם? לא חבל על בקשות ה HTTP המיותרות?

אתה יכול לעשות בקשה אחת שתבקש את תוכן שני הקבצים, ולשלוח אותם מקודדים בחזרה ב JSON (למזלנו יש ב PHP פונקציה נחמדה שנקראת json_encode()), או משהו כזה, ואז בצד הלקוח לקחת כל אחד מחלקי התשובה, ולדחוף אותו למקום המתאים...

נ.ב. לפתוח קובץ על השרת על פי הנחיות הלקוח, זה רעיון רע מאוד מאוד. באופן כללי לתת שמות של קבצים על השרת זה רע כי קשה לאבטח קלטים שמגיעים מלקוח - אתה תמיד עלול לפספס משהו. יותר חכם לעשות שאם משתנה מסויים שווה למשהו מסויים, פתח קובץ בשם מסויים וכו'. ככה רק הקוד שלך קובע את שמות הקבצים שנפתחים, ובמקרה הגרוע ביותר, לא יחזור כלום אם הלקוח שולח בקשה עם ערך משתנה לא צפוי.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 20-06-2013, 00:21
צלמית המשתמש של linuxsboot
  linuxsboot linuxsboot אינו מחובר  
 
חבר מתאריך: 15.04.06
הודעות: 18,034
בתגובה להודעה מספר 2 שנכתבה על ידי שימי שמתחילה ב "אולי אתה יורה את בקשת ה..."

הקדמה, הייתי במיון עם בעיה רפואית שבוע שעבר ומחר אני עדיין חייב להגיע בגללה לביקורת ולכן לא היה לי זמן לרשום תשובה מסודרת, אבל עכשיו ישבתי ורשמתי תגובה מסודרת.


כמה בעיות
א, כאשר הדף שמור כ xhtml מקבלים את שגיאה הבאה:
קוד:
This page contains the following errors: error on line 36 at column 21: EntityRef: expecting ';' Below is a rendering of the page up to the first error.

השורה הזאת של הקוד גורמת לשגיאה:
קוד:
stringurl2 = "&p=";

חשוב לציין שלא מצאתי מדוע ה xhtml נותן את ההודעה הזאת של השגיאה וכאשר ניסיתי לשלוח את כל החרוזות בלי משתנים שמכילים את המחרוזות השגיאה הזתא פשוט עברה לשורה הזאת:
קוד:
xmlhttp.open("POST", stringurl + strxmlstring + stringurl2 + strxmlstring2 ,true);

כאשר תחליף את stringurl בתוכן שהוא מקבל, strxmlstring שוב בתוכן שהוא מקבל, stringurl2 בתוכן שהוא מקבל ואת strxmlstring2 בתוכן שהוא מקבל והשגיאה נמצאת בתוכן של stringurl2.
ניסיתי לקרוא לזה y ובשמות אחרים ועדיין השגיאה נשארת זהה.

ב, כאשר הדף שמור כ html יש פלט, אבל שוב זה מדפיס את הקובץ הראשון בלבד לשני האיזורים ולא מדפיס את התוכן של הקובץ השני, אפילו ש p מכיל את השם של הקובץ השני.

הנה הקוד המלא של ה js: (כל הפרמטרים נשלחים יחדיו לפונקציה.)
קוד:
<script language="JavaScript"> onload = function() { loaddefault(); //function loaddefault1(strid,strxmlstring) function loaddefault() { var strid = new String; var strxmlstring = new String; var strid2 = new String; var strxmlstring2 = new String; strid = "maindivsub1-2div"; strxmlstring = "htmlbar.xml"; strid2 = "maindivsub2-2div"; strxmlstring2 = "text.xml"; // alert(number); // alert(strid); // alert(strxmlstring); var stringurl = new String; stringurl= "loadphp.php?path="; // dfd var stringurl2 = new String; stringurl2 = "&p="; showxml(stringurl, strxmlstring, strid, stringurl2, strxmlstring2, strid2); } /* pringing the tags functions */ function showxml(stringurl, strxmlstring, strid, stringurl2, strxmlstring2, strid2) { if (stringurl=="") { document.getElementById(strid).innerHTML="xml error 1"; return; } if (stringurl2=="") { document.getElementById(strid2).innerHTML="xml error 2"; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById(strid).innerHTML=xmlhttp.r esponseText; document.getElementById(strid2).innerHTML=xmlhttp. responseText; } } xmlhttp.open("POST", stringurl + strxmlstring + stringurl2 + strxmlstring2 ,true); xmlhttp.send(); } } </script>

הקוד של ה php:
קוד PHP:
<?php        
    
/*** create a SimpleXML object ***/
    
if( (! $xml simplexml_load_file($_REQUEST["path"]) ))
    {
        echo 
"Unable to load XML file";
    }
    else
    {
        
$i=0;
        
// categories -> items 
        
foreach($xml->children() as $items){
            echo (++
$i '<br />');

censored

            $str4 
$str1 $str2 $str3;
            echo (
$str4);
        }
    }

    
/*** create a SimpleXML object ***/
    
if( (! $xml simplexml_load_file($_REQUEST["p"]) ))
    {
        echo 
"Unable to load XML file";
    }
    else
    {
        
$i=0;
        
// categories -> items 
        
foreach($xml->children() as $items){
            echo (++
$i '<br />');

censored

            $str4 
$str1 $str2 $str3;
            echo (
$str4);
        }
    }
?>

ניסיתי להפריד את השורות האלה בקוד של ה js:
קוד:
document.getElementById(strid).innerHTML=xmlhttp.r esponseText; document.getElementById(strid2).innerHTML=xmlhttp. responseText;

אבל זה עדיין מדפיס לי לשני ה div's רק את התוכן של הקובץ הראשון בדרך עליה אתה מדבר.

לגבי זה:
ציטוט:
אתה יכול לעשות בקשה אחת שתבקש את תוכן שני הקבצים, ולשלוח אותם מקודדים בחזרה ב JSON (למזלנו יש ב PHP פונקציה נחמדה שנקראת json_encode()), או משהו כזה, ואז בצד הלקוח לקחת כל אחד מחלקי התשובה, ולדחוף אותו למקום המתאים...

בשביל אני זה אני צריך לעשות המרה מ xml ל json בצד השרת לא?

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

אתה מדבר על יצירה של קובץ דינאמי שעושה את העבודה מצד השרת ומחזיר את הערך בעצמו לצד הלקוח אחרי שהוא נוצר על ידי קובץ ה php שלי עכשיו?
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
will you marry me nesli barda? Operating system: Linux The day Microsoft & apple makes a product that does not suck will be the day they start making vacuum cleaners. say no to Apple&Facebook&MS&Samsung IL&Nokia&Hot&Yes,but say yes to Google

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

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

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

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