اذهب إلى المحتوى
  • 0

خطأ في console عند جلب البيانات بواسطة fetch

محمود_سعداوي

السؤال

السلام عليكم.

أنا بصدد القيام ببرنامج بحث عن بوكيمونات و ذلك بواسطة fetchAPI ،

let url= "https://pokeapi.co/api/v2/pokemon?limit=200"
function fetchPoke (){
    fetch(url)
    .then(res => res.json())
    .then((allPoke) =>{
        // console.log(allPoke)
        allPoke.results.forEach((pokemon) => {

            fetchPokeFull(pokemon)
            // console.log(pokemon.url)
        });
       
    })
}
fetchPoke()

function fetchPokeFull(pokemon){

    let urlP           = pokemon.url
    let nameP          = pokemon.name
    let objPokemonFull = {}
    console.log(urlP);

    fetch(urlP)
    .then( resP => resP.json())
    .then((pokeData) =>{
        // console.log(pokeData)
        objPokemonFull.pic = pokeData.sprites.front_default   //صورة البوكيمون
        // console.log(objPokemonFull.pic);
        objPokemonFull.type = pokeData.types[0].type.name    //نوع البوكيمون
        // console.log(objPokemonFull.type);

        fetch(`https://pokeapi.co/api/v2/pokemon-species/${nameP}`)
        .then(re => re.json())
        .then((pokeData) =>{
            // console.log(pokeData)
            objPokemonFull.name = pokeData.names[8].name  //إختيار اللغة الإنجليزية لأسماء البوكيمون (العربية غير متوفرة)
            allPokemon.push(objPokemonFull)

            if (allPokemon.length == 200){
                console.log(allPokemon);
            }
        })

    })

}
fetchPokeFull()

console يظهر لي خطأ في عدم معرفة متغير لكن الكود يعمل بشكل جيد

Uncaught TypeError: Cannot read properties of undefined (reading 'url')
    at fetchPokeFull (script.js:36:34)
    at script.js:65:1

شكرا مسبقا. أعتقد أن الخطأ عند مناداة fetchPokeFull

تم التعديل في بواسطة Hassan Hedr
إضافة الشيفرة ونص الخطأ
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

الخطأ لديك في استدعاء دالة fetchPokeFull في النهاية، حيث أن الدالة تتوقع تمرير غرض يعبر عن بيانات عنصر من عناصر البحث، لا داعي لإستدعائها بنفسك فالتابع fetchPoke يثوم باستدعائه بشكل مناسب عند وصول البيانات،

قم بحذف الاستدعاء الأخير كالتالي

// fetchPokeFull()

ولتجنب الاستدعاء الخاطئ يمكن حماية التابع من داخله عبر الخروج مبكرًا في حال كان المعامل الممرر بلا قيمة كالتالي 

function fetchPokeFull(pokemon){
  
  if(!pokemon) return; // التحقق من المعاملات
  ...

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يرجى إرفاق الشيفرة من الملف بشكل نصي مع تنسيقه كشيفرة ضمن السؤال، ,أيضًا إرفاق رسالة الخطأ بشكل نصي من فضلك حتى يستطيع جميع الزوار مساعدتك بشكل أفضل 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ الآن قال Hassan Hedr:

يرجى إرفاق الشيفرة من الملف بشكل نصي مع تنسيقه كشيفرة ضمن السؤال، ,أيضًا إرفاق رسالة الخطأ بشكل نصي من فضلك حتى يستطيع جميع الزوار مساعدتك بشكل أفضل 

Pokedox.zip

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال محمود سعداوي:

يرجى تعديل السؤال الأساسي وعدم إرفاق الملفات بل فقط إضافة الجزء المتعلق بالخطأ كشيفرة ضمن السؤال وأيضًا رسالة الخطأ كنص ضمنها

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 17 دقائق مضت قال Hassan Hedr:

يرجى تعديل السؤال الأساسي وعدم إرفاق الملفات بل فقط إضافة الجزء المتعلق بالخطأ كشيفرة ضمن السؤال وأيضًا رسالة الخطأ كنص ضمنها

الخطأ موجود في السطر 65 script.js

الخطأ مثلما قلت هو عندما قمت بإعادة مناداة الدالة   fetchPokeFull

شكرا لكم

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...