Mohamed Ramzi2 نشر 10 يوليو أرسل تقرير نشر 10 يوليو قمت بعمل تطبيق حجز مناسبات عند الغاء او اضافة الحجز يعمل التطبيق في poatman وفي الواجهة الامامية حاولت كثيرا ولم اعرف السبب import React, { useContext, useEffect, useState } from "react"; import { IonContent, IonHeader, IonLoading, IonPage, IonTitle, IonToolbar, } from "@ionic/react"; import axios from "../config/axios"; import { AuthContext } from "../context/AuthContext"; import { CREATE_EVENT_URL, GET_MYBOOKING_URL } from "../config/urls"; import { IonButton, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonBreadcrumb, IonBreadcrumbs, IonIcon, } from "@ionic/react"; import { arrowForwardCircle } from "ionicons/icons"; import { useParams } from "react-router"; const Booking = () => { const [booking, setBooking] = useState([]); const [showLoading, setShowLoading] = useState(false); const { jwt } = useContext(AuthContext); const eventId = useParams(); useEffect(() => { getBooking(); }, []); const onSubmit = async () => { try { await axios .put(CREATE_EVENT_URL + "/" + { eventId }, { headers: { Authorization: jwt, }, }) .then((res) => { console.log("Event is deleted:", res.data); }); } catch (e) { console.log(e); } }; const getBooking = async () => { setShowLoading(true); try { await axios .get(GET_MYBOOKING_URL, { headers: { Authorization: jwt, }, }) .then((res) => { setBooking(res.data.getBookings[0].Events); setShowLoading(false); }); } catch (e) { console.error("Error creating event:", e.response ? e.response.data : e); setShowLoading(false); } }; return ( <IonPage> <IonBreadcrumbs> <IonBreadcrumb href="/events"> Home <IonIcon slot="separator" icon={arrowForwardCircle}></IonIcon> </IonBreadcrumb> <IonBreadcrumb href="/booking">Booking</IonBreadcrumb> </IonBreadcrumbs> {showLoading ? ( <IonLoading isOpen={showLoading} duration={1000} /> ) : ( booking && ( <> <IonHeader> <IonToolbar color="primary"> <IonTitle>صفحة حجوزاتي </IonTitle> </IonToolbar> </IonHeader> <IonContent> {booking.length > 0 ? ( booking.map((Events) => { return ( <IonCard key={Events.id}> <IonCardHeader> <IonCardTitle>{Events.title}</IonCardTitle> <IonCardSubtitle>{Events.description}</IonCardSubtitle> </IonCardHeader> <IonCardContent>{Events.price}</IonCardContent> <IonButton fill="clear" onClick={() => onSubmit()}> الغاء </IonButton> </IonCard> ); }) ) : ( <IonCardContent>لا يوجد حجوزات</IonCardContent> )} </IonContent> </> ) )} </IonPage> ); }; export default Booking; 1 اقتباس
0 Mustafa Mahmoud7 نشر 11 يوليو أرسل تقرير نشر 11 يوليو عند ظهور رسالة الخطأ "Request failed with status code 401" أو 401 Unauthorized بجانب رابط الطلب ذلك يشير إلى أنك لم تقم بتسجيل الدخول ولم تتم عملية المصادقة بشكل صحيح أو الjwt الذي تحتفظ به في الحالة أو تحصل عليه عن طريق useContext const { jwt } = useContext(AuthContext); انتهت صلاحيته فلابد من إعادة تسجيل الدخول مرة أخرى. وفي الواجهة الخلفية أنت قمت بإضافة الدالة isLoggedIn للتأكد أن المستخدم قام بتسجيل الدخول حتى يستطيع الوصول للدالة bookingController.booking وتقوم بإرسال التوكين في ال header في الAuthorization فى برنامج البوست مان لهذا عند الغاء او اضافة الحجز يعمل التطبيق في البوست مان بدون مشكلة. يوجد خطأ أخر فى الواجهة الأمامية فى الدالة onSubmit const onSubmit = async () => { try { await axios .put(CREATE_EVENT_URL + "/" + { eventId }, { ^^^^^^^^^^ headers: { Authorization: jwt, }, }) .then((res) => { console.log("Event is deleted:", res.data); }); } catch (e) { console.log(e); } }; يحتوي على خطأ في طريقة بناء الرابط باستخدام الكائن { eventId } . الكود الحالي سيؤدي إلى إنشاء رابط غير صحيح بسبب تضمين الكائن { eventId } سيتم تحويل الكائن إلى سلسلة نصية غير صحيحة. http://localhost:4000/event/[Object%20Object] في هذه الحالة لا يصل إلى ال event الصحيح في الواجهة الخلفية وحتى يتم كتابة ال eventId بشكل صحيح نقوم بالتعديل والصحيح له يكون كالأتي نقوم بكتابة المتغير مباشرة وليس كائن const onSubmit = async () => { try { await axios .put(CREATE_EVENT_URL + "/" + eventId , { headers: { Authorization: jwt, }, }) .then((res) => { console.log("Event is deleted:", res.data); }); } catch (e) { console.log(e); } }; أو استخدام ال Template literals `` لإضافة متغير داخل السلسة النصية const onSubmit = async () => { try { await axios .put(`${CREATE_EVENT_URL}/${eventId}`, { headers: { Authorization: jwt, }, }) .then((res) => { console.log("Event is deleted:", res.data); }); } catch (e) { console.log(e); } }; اقتباس
-2 محمد عبد العزيز3 نشر 10 يوليو أرسل تقرير نشر 10 يوليو الخطأ الذي يظهر عندك "Request failed with status code 401" والذي يعني أن عنوان الURL غير موجود أو قديم أو به خطأ إملائي وبالتالي عليك التأكد أن عنوان ال URL صحيح وتجربة هذا التعديل والمحاوله مره أخري. const {eventId} = useParams() // عمل desctructuring لقيم ال useParams //.... const onSubmit = async () => { try { await axios .put(`${CREATE_EVENT_URL}/${eventId}`, { // إستخدام ال Template literals headers: { Authorization: jwt, }, }) بالتوفيق اقتباس
السؤال
Mohamed Ramzi2
قمت بعمل تطبيق حجز مناسبات عند الغاء او اضافة الحجز يعمل التطبيق في poatman وفي الواجهة الامامية حاولت كثيرا ولم اعرف السبب
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.