קבלת json שנשלח לשרת ע"י js לתוך php

UU

משתמש סופר מקצוען
הנדסת תוכנה
לא ממש מכירה את הפונקציה fetch, מאמינה שהיא שולחת post רגיל
הקוד הבסיסי יראה כך:
קוד:
<?php
if(is_array($_POST) && isset($_POST['body'])){
$json = $_POST['body'];
}

אני רק לא זוכרת איך אוביקט הJSON מתקבל פה - כסטרינג או כמערך, פשוט להדפיס אותו ולראות
בהצלחה
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
שאלה יפה מאוד.
אתה יכול לראות את הBODY כאן:
file_get_contents('php://input');
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
לא ממש מכירה את הפונקציה fetch, מאמינה שהיא שולחת post רגיל
הקוד הבסיסי יראה כך:
קוד:
<?php
if(is_array($_POST) && isset($_POST['body'])){
$json = $_POST['body'];
}

אני רק לא זוכרת איך אוביקט הJSON מתקבל פה - כסטרינג או כמערך, פשוט להדפיס אותו ולראות
בהצלחה

לא. זה לא יעבוד.
PHP יודע לעשות את המשתנה הסופר גלובלי $_POST רק אם נסביר לו ברחל בתך הקטנה שזה סוג הREQUEST שמגיע כעת
וזאת על ידי שנגדיר HEADER בתוך הREQUEST שלנו
אם משתמשים בFETCH אז זה יראה ככה:
headers : {'Content-Type' : 'application/x-www-form-urlencoded'}
 

איש פשוט

משתמש רשום
שאלה יפה מאוד.
אתה יכול לראות את הBODY כאן:
file_get_contents('php://input');

תודה לעונים!

ניסיתי להוסיף את זה לPHP זה לא עובד לי משום מה נראה שהדפדפן נכנס ללופ.. (כמובן שאני מריץ על שרת wamp).
מצרף את הקוד כולל הPHP הנה: https://next.plnkr.co/edit/y48GGG4HxzCkpP9C?open=lib/script.js

הJS מחובר לindex.php ומה שאני מצפה שיקרה זה שהדפדפן יקרא את הjs ישלח את הpost ואז ידפיס לי את המערך שחוזר..

איפה הטעות?
 

איש פשוט

משתמש רשום
במקום מה שרשמת
$body = json_decode(file_get_contents("http://localhost/test-site/"), true);
אתה צריך לרשום:
$body = json_decode(file_get_contents("php://input"), true);

על החיה הזו (php://input)
אתה יכול לקרוא כאן:
http://php.net/manual/wrappers.php.php#wrappers.php.input

עדיין לא עובד.. אין שום שגיאה אבל לא מודפס כלום למסך.
מה עוד יכול להיות בעייתי?
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
למה שזה יוציא לך משהו למסך? אתה עושה FETCH אבל אתה לא מעבד את התשובה שלו בכלל.
תפתח את הקונסול (יותר מדויק את הלשון NETWORK שם, ושם אתה אמור לראות שהפנייה לשרת אכן התבצעה ואכן קיבלת תשובה)

אבל, באופן עקרוני, אם אתה בכיוון ללמוד את התחום, אז קודם כל אתה חייב ללמוד לדבג (מלשון DEBUG). כאשר תוכנה שמורכבת יותר מכמה שורות כמעט אף אחד היא לא עובדת. כי פעם לא שמת לב לזה, ופעם לזה. וחייב שתהיה לך אפשרות לבדוק בכל אחת מהשורות של קוד - האם העניינים הולכים כפי שאתה מצפה או לא.
אז בPHP אתה יכול לעשות var_dump ובצד הקליינט החלונית של 'כלים עבור מפתחים' צריכה להיות פתוחה ברוב הזמן
upload_2019-2-8_11-57-32.png
 

איש פשוט

משתמש רשום
למה שזה יוציא לך משהו למסך? אתה עושה FETCH אבל אתה לא מעבד את התשובה שלו בכלל.
תפתח את הקונסול (יותר מדויק את הלשון NETWORK שם, ושם אתה אמור לראות שהפנייה לשרת אכן התבצעה ואכן קיבלת תשובה)

אבל, באופן עקרוני, אם אתה בכיוון ללמוד את התחום, אז קודם כל אתה חייב ללמוד לדבג (מלשון DEBUG). כאשר תוכנה שמורכבת יותר מכמה שורות כמעט אף אחד היא לא עובדת. כי פעם לא שמת לב לזה, ופעם לזה. וחייב שתהיה לך אפשרות לבדוק בכל אחת מהשורות של קוד - האם העניינים הולכים כפי שאתה מצפה או לא.
אז בPHP אתה יכול לעשות var_dump ובצד הקליינט החלונית של 'כלים עבור מפתחים' צריכה להיות פתוחה ברוב הזמן
צפה בקובץ המצורף 440574

תודה על ההשקעה!
זה אכן מופיע בNETWORK שזה מתקבל בphp.. חשבתי שהecho אמור להדפיס את התוצאה גם למסך..
 

Naftali Stein

משתמש מקצוען
מנוי פרימיום
בוגר/תלמיד פרוג
D I G I T A L
לא הבנתי מה אתה מנסה לעשות:D

בכל אופן...
Fetch בברירת מחדל שולח get אלא אם הגדרת אחרת כמו שכתבו למעלה.

לגבי הדף php עצמו,

הדף אכן ידפיס את המערך אבל הוא לא יוצג בדפדפן מעצמו, כי אתה לא פונה לדף php באמצעות הדפדפן, אתה פונה עם fetch, מי שמקבל את ה echo זה הjs, אתה צריך לשרשר לו פונקציה של then ואז לחלץ את הjson ולהדפיס למסך.
 

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קיט ב'

ט בַּמֶּה יְזַכֶּה נַּעַר אֶת אָרְחוֹ לִשְׁמֹר כִּדְבָרֶךָ:י בְּכָל לִבִּי דְרַשְׁתִּיךָ אַל תַּשְׁגֵּנִי מִמִּצְוֹתֶיךָ:יא בְּלִבִּי צָפַנְתִּי אִמְרָתֶךָ לְמַעַן לֹא אֶחֱטָא לָךְ:יב בָּרוּךְ אַתָּה יְהוָה לַמְּדֵנִי חֻקֶּיךָ:יג בִּשְׂפָתַי סִפַּרְתִּי כֹּל מִשְׁפְּטֵי פִיךָ:יד בְּדֶרֶךְ עֵדְוֹתֶיךָ שַׂשְׂתִּי כְּעַל כָּל הוֹן:טו בְּפִקֻּדֶיךָ אָשִׂיחָה וְאַבִּיטָה אֹרְחֹתֶיךָ:טז בְּחֻקֹּתֶיךָ אֶשְׁתַּעֲשָׁע לֹא אֶשְׁכַּח דְּבָרֶךָ:
נקרא  4  פעמים

לוח מודעות

למעלה