نقطتان للرمز المميز غير متوقع: حل أخطاء JSONP في jQuery.ajax#get
عند مواجهة خطأ "نقطتان للرمز المميز غير متوقع" في jQuery.ajax #get، من المهم فهم طبيعة طلبات JSONP (JSON with Padding). يتضمن JSONP إرسال بيانات JSON مرة أخرى إلى استدعاء دالة JavaScript عامة من جانب العميل.
لدعم JSONP، يجب أن يقوم الخادم بتضمين "الحشوة" في الاستجابة. يتكون "الحشو" من اسم وظيفة رد الاتصال متبوعًا ببيانات JSON المحاطة بين قوسين:
jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})
في هذا المثال، اسم وظيفة رد الاتصال هو jQuery111108398571682628244_1403193212453. يحدث الخطأ لأن JavaScript يوزع JSONP كجافا سكريبت، حيث يمثل {...} أيضًا الكتل.
لتصحيح هذا الخطأ، يحتاج الخادم إلى تضمين "الحشوة" في الاستجابة. بالإضافة إلى ذلك، ستتضمن jQuery عادةً معلمة سلسلة استعلام رد الاتصال مع اسم الوظيفة. لاستيعاب ذلك، يمكن لرمز الخادم استخدام عبارة شرطية للتحقق من معلمة رد الاتصال وإرسال الاستجابة وفقًا لذلك:
var callback = req.query.callback; var data = JSON.stringify({ Name : "Tom", Description : "Hello it's me!" }); if (callback) { res.setHeader('Content-Type', 'text/javascript'); res.end(callback '(' data ')'); } else { res.setHeader('Content-Type', 'application/json'); res.end(data); }
بدلاً من ذلك، يوفر ExpressJS طريقة res.jsonp() التي تعالج هذا الشرط بالفعل، مما يسهل إرجاع استجابات JSONP:
app.get( '/', function( req, res ) { console.log( 'req received' ); res.jsonp({ Name : "Tom", Description : "Hello it's me!" }); });
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3