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

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



  #1  
ישן 09-04-2009, 22:16
  waG waG אינו מחובר  
 
חבר מתאריך: 08.07.05
הודעות: 144
שליחת טפסים ב AJAX

היי לכולם, החלטתי ללמוד ולהתנסות ב AJAX עכשיו זה טכנולוגיה מאוד גאונית ואני מאוד אוהב את זה, רק שהבעיה שלי שאני מצליח להעביר רק פרמטר 1 :S
נסיתי לקרוא פעמיים לפעולה שלי makeRequest, אבל זה עדין העביר רק את הפרמטר הראשון, אז נסיתי ליצור אובייקט נוסף שינסה לשמש אותי והנה מה שיצא, אבל עדין מעביר רק את הראשון
קוד PHP:
 <html>
    <
head>
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1255" />

<
script language="javascript" type="text/javascript">
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();
var 
receiveReq2 getXmlHttpRequestObject();

//Initiate the AJAX request
function makeRequest(urlparamparam2
{
    
//If our readystate is either not started or finished, initiate a new request
    
if (receiveReq.readyState == || receiveReq.readyState == 0
    {
        
//Set up the connection to captcha_test.html. True sets the request to asyncronous(default) 
        
receiveReq.open("POST"urltrue);
        
//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);
    }   


    if (
receiveReq2.readyState == || receiveReq2.readyState == 0
    {
        
//Set up the connection to captcha_test.html. True sets the request to asyncronous(default) 
        
receiveReq2.open("POST"urltrue);
        
//Set the function that will be called when the XmlHttpRequest objects state changes
        
receiveReq2.onreadystatechange updatePage

        
receiveReq2.setRequestHeader("Content-type""application/x-www-form-urlencoded");
        
receiveReq2.setRequestHeader("Content-length"param2.length);
        
receiveReq2.setRequestHeader("Connection""close");
        
        
//Make the request
        
receiveReq2.send(param2);
    }  
}

//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;
    }

    if (
receiveReq2.readyState == 4
    {
        
//Set the content of the DIV element with the response text
        
document.getElementById('result2').innerHTML receiveReq2.responseText;
    }



}

//Called every time when form is perfomed
function getParam(theForm,url
{
    
//Set up the parameters of our AJAX call
    
var postStr theForm.text.name "=" encodeURIComponenttheForm.text.value );
    var 
postStr2 theForm.b.name "=" encodeURIComponenttheForm.b.value );
    
//Call the function that initiate the AJAX request
    
makeRequest(urlpostStr);
    
makeRequest(urlpostStr2);
}
</script>
    </head>
<body>

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


        <div id="result">
        </div>

        <div id="result2">
        </div>


</body>
</html> 


אם יש דרך להעביר טופס שלם בדרך יותר חכמה/יעילה אשמח לשמוע, אני מגגל את זה כבר כמה שעות ואני לא מוצא אנשים שמעבירים יותר מפרמטר אחד
_____________________________________


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 10-04-2009, 00:44
  waG waG אינו מחובר  
 
חבר מתאריך: 08.07.05
הודעות: 144
בתגובה להודעה מספר 1 שנכתבה על ידי waG שמתחילה ב "שליחת טפסים ב AJAX"

עכשיו אני משתמש בזה בצורה כזאות, אבל בכל זאות אני צריך לשלוח כמה פרמטרים, אשמח לעזרה
קוד PHP:
 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(urlparam
{
    
//If our readystate is either not started or finished, initiate a new request
    
if (receiveReq.readyState == || receiveReq.readyState == 0
    {
        
//Set up the connection to captcha_test.html. True sets the request to asyncronous(default) 
        
receiveReq.open("POST"urltrue);
        
//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.text.name "=" encodeURIComponenttheForm.text.value );

    
//Call the function that initiate the AJAX request
    
var path url "?name=" encodeURIComponenttheForm.name.value );
    
makeRequest(pathpostStr);


_____________________________________


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 10-04-2009, 02:24
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 2 שנכתבה על ידי waG שמתחילה ב "עכשיו אני משתמש בזה בצורה..."

תוריד את השורות האלו:
קוד:
receiveReq.setRequestHeader("Content-length", param.length); receiveReq.setRequestHeader("Connection", "close");


הבקשה תצליח גם בלעדיהם.

---

החלק הבא:
קוד:
if (receiveReq.readyState == 4 || receiveReq.readyState == 0)


שנמצא בפונקציה makeRequest - מיותר, עד כמה שאני זוכר מתיכנות ה-core של AJAX.

---

לגבי קידוד פרמטר ה-POST שעשית כאן:
קוד:
var postStr = theForm.text.name + "=" + encodeURIComponent( theForm.text.value );


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

כדי להעביר 2 פרמטרים במתודת POST או במתודת GET, תצטרך להפרידם עם הסימן "&" (הידוע כ- ampersand).


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

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

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

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

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



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

הדף נוצר ב 0.10 שניות עם 11 שאילתות

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

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