שליחה לשרת בmethod post בjs
-
לא הצלחתי לעשות שליחה לשרת בmethod post בjs.
אני מצרף דוגמא (למרות שהיא מנופחת כנראה, מחוסר היכירותי את השוק).
function adCon(content){ //console.log(JSON.parse(content)) console.log(this.responseText) } function dddddd(doAtEnd) { var xhttp; xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { doAtEnd(this.responseText); } }; xhttp.open("POST", "index.php"); xhttp.setRequestHeader('p','ddd'); xhttp.send(); }תודה מראש
משום מה לאחר הרבה שיטוטים לא מצאתי דוגמא טובה. -
כתבת פונקציות אבל לא הבאת קוד שקורא להם. עצם זה שיש פונקציה לא אומר שהיא תרוץ.
כמו"כ חסר סוגר בפונקציה השניה.
בדוק אם ככה עובד לך:function adCon(content) { //console.log(JSON.parse(content)) console.log(this.responseText) } function dddddd(doAtEnd) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { doAtEnd(this.responseText); } }; xhttp.open("POST", "index.php"); xhttp.setRequestHeader('p', 'ddd'); xhttp.send(); } dddddd(adCon);אם לא עובד תראה אם יש שגיאה בקונסול.
(אגב עם איזה IDE אתה עובד? איפה אתה כותב את הקוד?) -
כתבת פונקציות אבל לא הבאת קוד שקורא להם. עצם זה שיש פונקציה לא אומר שהיא תרוץ.
כמו"כ חסר סוגר בפונקציה השניה.
בדוק אם ככה עובד לך:function adCon(content) { //console.log(JSON.parse(content)) console.log(this.responseText) } function dddddd(doAtEnd) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { doAtEnd(this.responseText); } }; xhttp.open("POST", "index.php"); xhttp.setRequestHeader('p', 'ddd'); xhttp.send(); } dddddd(adCon);אם לא עובד תראה אם יש שגיאה בקונסול.
(אגב עם איזה IDE אתה עובד? איפה אתה כותב את הקוד?) -
כתבת פונקציות אבל לא הבאת קוד שקורא להם. עצם זה שיש פונקציה לא אומר שהיא תרוץ.
כמו"כ חסר סוגר בפונקציה השניה.
בדוק אם ככה עובד לך:function adCon(content) { //console.log(JSON.parse(content)) console.log(this.responseText) } function dddddd(doAtEnd) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { doAtEnd(this.responseText); } }; xhttp.open("POST", "index.php"); xhttp.setRequestHeader('p', 'ddd'); xhttp.send(); } dddddd(adCon);אם לא עובד תראה אם יש שגיאה בקונסול.
(אגב עם איזה IDE אתה עובד? איפה אתה כותב את הקוד?)@dovid אמר בשליחה לשרת בmethod post בjs:
כתבת פונקציות אבל לא הבאת קוד שקורא להם. עצם זה שיש פונקציה לא אומר שהיא תרוץ.
כמו"כ חסר סוגר בפונקציה השניה.
בדוק אם ככה עובד לך:function adCon(content) { //console.log(JSON.parse(content)) console.log(this.responseText) } function dddddd(doAtEnd) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { doAtEnd(this.responseText); } }; xhttp.open("POST", "index.php"); xhttp.setRequestHeader('p', 'ddd'); xhttp.send(); } dddddd(adCon);אם לא עובד תראה אם יש שגיאה בקונסול.
עכשיו ניסיתי שוב, לא ברור לי מה עבד ומה לא עבד.
לא היה שגיאה בקונסול, והוא החזיר לי תוצאה, אבל ראיתי שלמרות שב-headers הפרמטר של ה'p' (ה-ddd) מופיע, אבל בצד השרת כשאני מנסה לזהות את הפרמטר, ככהif (isset($_REQUEST["p"])אז הוא לא מזהה אותו כקיים. ולכן אני לא יכול לעבוד עם הפרמטר הזה.
מה הבעיה? -
xhttp.setRequestHeader('p', 'ddd');זה מוסיף כותרת (header).
$_REQUEST, לא ניגש לheaders אלא לפרמטרים או בשורת הכתובת (query string) או בגוף הבקשה (body) או בעוגיות.בשביל להוסיף פרמטר לגוף הבקשה, וממילא שיכול להיקרא ע"י ה$_REQUEST יש לתת את הערכים כארגומנט למתודה send. אפשר להשתמש עם FormData או טקסט רגיל:
var data = new FormData(); data.append('p', 'ddd') xhttp.send(data);טקסטואלי:
var data = "p=ddd"; xhttp.send(data);
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות