שאלה של טירון - אפליקציית WEB פשוטה - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה של טירון - אפליקציית WEB פשוטה


NI4NI

Recommended Posts

שלום

ראשית, אני אקדים ואומר שאין לי בכלל נסיון בפיתוח WEB, אך יש לי ניסיון ב-JAVA. לכן אני מניח שמפתחי ה WEB פה יגחכו.

מה שאני רוצה זה לפתח מקומית קטנה (לא חשופה לאינטרנט) שהממשק שלה יהיה וובי. אני רוצה שזה יהיה כמה שיותר רזה וקטן ולכן אני לא משתמש בשום WEB SERVER או APP SERVER גדול ומוכר אלא פשוט כתבתי web server קטן בעצמי. אני אקבל את המידע מה BROWSER וכבר ינתח אותו ויתעסק איתו בעצמי.

הבעיה היא שלא ברור לי איך לשלוח מידע מה client ל- server. יש כמובן אפשרות ליצור FORMS ולשלוח בעזרת SUBMIT, אבל באפליקציית WEB מודרנית הרי אין כאלה כפתורים, אלא בעצם IMAGES.

בקיצור, אני רוצה שהמשתמש ילחץ על INAGE מסויים (כפתור) והשרת יקבל אינדיקציה שכפתור X הוקלק. איך אני עושה את זה ? האם חייבים FORMS ?

רצוי ששפת ה CLIENT SIDE תהיה JAVASCRIPT אבל כל דבר אחר שעובד גם יתקבל בברכה.

קישור לתוכן
שתף באתרים אחרים

לא ברור לי למה לתת לבנאדם jqery לשאלה של web לכיתה ג'? לא חבל על הבזבוז זמן שלו ועל תלות מיותרת לחלוטין על משהו שאין בו צורך?

כדי לעשות כפתור עם תמונה כל מה שצריך זה html פשוט או css

<button type="submit"><img src="xxx" alt="yyy" /></button>

או

<input type="image />

או הדרך המועדפת שהיא <button> ולהגדיר לו רקע בcss

או

כל אלמנט בדף, למשל תמונה, אפשר לשים לו אירוע onclick ולשלוח את הבקשה לשרת עם ajax (בלי טופס וטעינת העמוד מחדש).

קישור לתוכן
שתף באתרים אחרים

היי

לגבי הלינק ל jquery, בדקתי וזה לא בדיוק מה שאני צריך. בלינק מתואר איך לעשות שתהיה תגובה לקליק, אבל התגובה הזאת נשארת לגמרי בצד של הקליינט - השרת לא יודע בכלל שהקלקנו. אני צריך בתגובה לקליק שהשרת יעשה משהו.

לגבי התגובה של liorwohl, נראה לי שזה הכיוון הנכון, אבל איך אני קושר אירוע onclick לסתם image ואיך אני שולח את הבקשה לשרת עם AJAX ?

האם תוכל להפנות אותי לדוגמה ?

תודה

קישור לתוכן
שתף באתרים אחרים

יש פה 2 דברים, אחד משהו בסיסי ביותר (events) והשני כבר למתקדמים.

התשובה לראשון היא:

< img src="xxx" onclick="some js code" />

התשובה לשני היא:

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

בעקרון אתה מביא לה כתובת של קובץ צד שרת שמחזיר את התוצאה שלו בxml, והפונקציה מחזירה לך את הxml הזה.

function getXmlHttpObject()
{
if (window.XMLHttpRequest)
return new XMLHttpRequest();
else if (window.ActiveXObject)
return new ActiveXObject("Microsoft.XMLHTTP"); //IE6
else
return false;
}

function ajax(action,postArgs)
{
//create XMLHttpRequest object
xmlHttp = getXmlHttpObject();

//send the request to the server
xmlHttp.open("post",action,false);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(postArgs);

//uncomment to debug (good to see php errors in webservices)
//alert(xmlHttp.responseText);

//get the XML response from the server
xmlDoc = xmlHttp.responseXML.documentElement;

//return the XML DOM
return xmlDoc;

//example:
//xmlDoc = ajax("doSomething.php?getVar=val","postVar=boo");
//alert(xmlDoc.getElementsByTagName("xmlTagName")[0].childNodes[0].nodeValue);
}

קישור לתוכן
שתף באתרים אחרים

היי

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

מה שאני כותב זה תוכנה מקומית - כלומר זה לא ירוץ על האינטרנט אלא במחשב בודד. זו למעשה תוכנת STANDALONE ורק הממשק משתמש שלה אמור להיות דרך ה browser.

בגלל שזו תוכנה קטנה ואמורה לשרת משתמש בודד החלטתי לפצל אותה ל-2: ממשק המשתמש שיהיה WEBי ותוכנת שרת קטנה ב JAVA שתרוץ ברקע ותקבל מה browser מידע על מה שהמשתמש עשה ותבצע דברים בהתאם. תוכנת השרת שכתבתי אינה ממש http server והיא אינה תומכת בכל התקנים והאובייקטים. מה שהיא עושה זה להאזין על הפורט שנקבע ולקבל ממנו input stream ו- output stream. קיוויתי שאני אוכל לנתח את המידע שמגיע ולפעול לפיו. בעצם לבנות פרוטוקול תקשורת קטן משלי.

בפועל, אם אני רוצה ממשק שהוא PURE WEB וללא APPLETS אז כל המידע שאני מקבל מגיע בצורת XMLHTTPRequest וכאלה, שהתוכנית שכתבתי לא יודעת לאכול. ראיתי שגם אין דרך לעשות SOCKET CONNECTION אמיתי מתוך JAVASCRIPT.

האם יש איזו דרך שהמשתמש, נניח, ילחץ על כפתור או על תמונה וה SERVER שלי יקבל אינדיקציה על זה ? וכל זה כאשר זו אינה תוכנת שרת תקנית שתומכת בסטנדרטים - פשוט לקבל משהו על ה input stream ?

אני כבר מתחיל להתייאש...

קישור לתוכן
שתף באתרים אחרים

היי

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

מה שאני כותב זה תוכנה מקומית - כלומר זה לא ירוץ על האינטרנט אלא במחשב בודד. זו למעשה תוכנת STANDALONE ורק הממשק משתמש שלה אמור להיות דרך ה browser.

בגלל שזו תוכנה קטנה ואמורה לשרת משתמש בודד החלטתי לפצל אותה ל-2: ממשק המשתמש שיהיה WEBי ותוכנת שרת קטנה ב JAVA שתרוץ ברקע ותקבל מה browser מידע על מה שהמשתמש עשה ותבצע דברים בהתאם. תוכנת השרת שכתבתי אינה ממש http server והיא אינה תומכת בכל התקנים והאובייקטים. מה שהיא עושה זה להאזין על הפורט שנקבע ולקבל ממנו input stream ו- output stream. קיוויתי שאני אוכל לנתח את המידע שמגיע ולפעול לפיו. בעצם לבנות פרוטוקול תקשורת קטן משלי.

בפועל, אם אני רוצה ממשק שהוא PURE WEB וללא APPLETS אז כל המידע שאני מקבל מגיע בצורת XMLHTTPRequest וכאלה, שהתוכנית שכתבתי לא יודעת לאכול. ראיתי שגם אין דרך לעשות SOCKET CONNECTION אמיתי מתוך JAVASCRIPT.

האם יש איזו דרך שהמשתמש, נניח, ילחץ על כפתור או על תמונה וה SERVER שלי יקבל אינדיקציה על זה ? וכל זה כאשר זו אינה תוכנת שרת תקנית שתומכת בסטנדרטים - פשוט לקבל משהו על ה input stream ?

אני כבר מתחיל להתייאש...

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

אולי תשתמש בדברים יותר קונבנציונליים כגון PERL? (בוינדוס תאלץ להתקין את פרל כמובן)

אך היא יכולה לשרת HTTP כמו שצריך מצד אחד ומצד שני לרשום לתוך ה socket של האפליקציית JAVA שלך ש"מאזינה" מקומית (סתם דוגמא: 127.0.0.1:8080)

ואם ממש לא תרצה להתקין איזה MINIHTTP או משהו בסגנון שלא ממש "רזה" , תאלץ לעבוד יותר קשה על השרת HTTP שיצרת עם ה JAVA בכדי שיעבוד כמו שצריך. אחרת תקרא לשפת תכנות אחרת לעזרתך. אני אישית עובד עם אז הכל היה פשוט - אם אני לא רוצה HTTP "צד שלישי" הייתי עושה HTTP דרך ה PERL ואז רושם מה שצריך ל SOCKET בו מאזינה התוכנת JAVA ובזה הסתיים הסיפור.

ואם אתה עם וינדוס אז תשאל את עצמך למה. ;-)

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...