הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   עזרה|ajax (https://hosts.co.il/forums/showthread.php?t=65106)

Ron | CSite.co.il 13-07-08 12:22

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

זה הקוד שלי:

HTML קוד:

function getXmlHttpRequestObject()
{
        if (window.XMLHttpRequest)
        {
                return new XMLHttpRequest(); //Mozilla, Safari ...
        }
        else if (window.ActiveXObject)
        {
                return new ActiveXObject("Microsoft.XMLHTTP"); //IE
        }
        else
        {
        //Display our error message
        alert("Your browser doesn't support the XmlHttpRequest object.");
        }
}

//Our XmlHttpRequest object
var receiveReq = getXmlHttpRequestObject();

//Initiate the AJAX request
function makeRequest(url, param)
{
        //If our readystate is either not started or finished, initiate a new request
        if (receiveReq.readyState == 4 || receiveReq.readyState == 0)
        {
                //Set up the connection to captcha_test.html. True sets the request to asyncronous(default)
                receiveReq.open("POST", url, true);
                //Set the function that will be called when the XmlHttpRequest objects state changes
                receiveReq.onreadystatechange = updatePage;
               
                receiveReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                receiveReq.setRequestHeader("Content-length", param.length);
                receiveReq.setRequestHeader("Connection", "close");
               
                //Make the request
                receiveReq.send(param);
        } 
}

//Called every time our XmlHttpRequest objects state changes
function updatePage()
{
        //Check if our response is ready
        if (receiveReq.readyState == 4)
        {
                //Set the content of the DIV element with the response text
                document.getElementById('result').innerHTML = receiveReq.responseText;
        }
}

//Called every time when form is perfomed
function getParam(theForm,url)
{
        //Set up the parameters of our AJAX call
        var postStr = theForm.UserName.name + "=" + encodeURIComponent( theForm.UserName.value );
        //Call the function that initiate the AJAX request
        makeRequest(url, postStr);
}


וכך אני קורא לו:
HTML קוד:

<form id="frmCaptcha" name="frmCaptcha">
<input id="UserName" type="text" name="UserName" value="" />                                       
<input id="Login" type="button" value="בדוק שם משתמש" name="CheckUserName"  onclick="getParam(this.form,'captcha.php')" />
</form>


ניסיתי לעשות שזה יעביר לי את כל הנתונים באותו הטופס אבל לא הצלחתי,
ניסיתי להוסיף forים אבל ברגע שעשיתי את זה זהפשוט לא הציג כלום.

אשמח לעזרה,
ותודה רבה לכולם.

BlueNosE 13-07-08 12:52

אתה מודע לעובדה שthis מתייחס לאינפוט הזה, ולכן this.form מתייחס לUNDEFINED?

Ron | CSite.co.il 13-07-08 13:20

this.form אמור להביא לי בעצם את ה id של הטופס (frmCaptcha) לא?
כמו שאמרתי,
כרגע זה עובד אבל מציג לי רק את האינפוט הראשון (אני יודע ששלחתי ל ajax רק את הראשון,אני מעוניין לשלוח את כולם - אבל שייעשה באופן אוטומטי אפילו אם בטופס יש 10 ערכים).

mlnn 13-07-08 13:46

במקום להעביר אחד אחד בלולאה, למה שלא תעביר את כולם בפעם אחת?
file.php?a=1&b=2&c=3

BlueNosE 13-07-08 13:49

ציטוט:

נכתב במקור על ידי Ron-Pro (פרסם 650089)
this.form אמור להביא לי בעצם את ה id של הטופס (frmCaptcha) לא?
כמו שאמרתי,
כרגע זה עובד אבל מציג לי רק את האינפוט הראשון (אני יודע ששלחתי ל ajax רק את הראשון,אני מעוניין לשלוח את כולם - אבל שייעשה באופן אוטומטי אפילו אם בטופס יש 10 ערכים).

לא, תעבוד עם parentElement

אני עובד עם serialize(true) של PROTOTYPE בשביל לשלוח את כל הFORM

Ron | CSite.co.il 13-07-08 14:08

ציטוט:

נכתב במקור על ידי mlnn (פרסם 650105)
במקום להעביר אחד אחד בלולאה, למה שלא תעביר את כולם בפעם אחת?
file.php?a=1&b=2&c=3

איך אפשר לעשות את זה ?
זה משנה מבחינת משאבים ?

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

Ron | CSite.co.il 13-07-08 17:36

משום מה אי אפשר לערוך את ההודעה |:
אבל הסתדרתי כבר בעזרת ה get.


כל הזמנים הם GMT +2. הזמן כעת הוא 21:17.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ