שליחה לשרת ב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 אתה עובד? איפה אתה כותב את הקוד?) -
@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);