سؤال

أنا أقدم طلبًا إلى صفحة JSON باستخدام jQuery's $.getJSON الطريقة ، ومن JSON العائد ، أقوم بإنشاء بعض HTML ووضعه على الصفحة.

تظهر المشكلات عندما يكون لدي كائن JSON متداخل ، سأريكم مثالًا لاحقًا.

أولاً ، إذا قمت بتقديم طلب إلى صفحة JSON الخاصة بي وإرجاع JSON التالي ، فإن الوظيفة تعمل بشكل جيد تمامًا وأرى عنصر HTML جميل يظهر على الصفحة:

JSON:

({
     "variants": [
         {
             "variantId": "536",
             "title": "Party Like a Rock Star for Two at the Metropolitan hotel, London ",
             "price": "£299.00"         
         }
     ]
})

هذا يعمل بشكل جيد ، لا أخطاء.

ومع ذلك ، بمجرد أن أعيد JSON أدناه ، لا تعمل الوظيفة.

({
     "variants": [
         {
             "variantId": "536",
             "title": "Party Like a Rock Star for Two at the Metropolitan hotel, London ",
             "price": "£299.00",
             "blogs": [
                 {
                     "title": "Another test",
                     "author": "Sean",
                 },
                 {
                     "title": "This is a test",
                     "author": "Sean",
                 }
             ]
         }
     ]
})

كما ترون ، لا توجد شخصيات فيها من شأنها أن تتسبب في كسرها أيضًا. لقد حاولت أيضًا إعادة تسمية الحقول ، فقط عن طريق الصدفة أن "المدونات" أو "العنوان" أو "المؤلف" كانت محفوظة في JS (كما اعتقدت ، لا فرق!)

للتأكد من أنها لم تكن طريقتي في معالجة البيانات التي كانت تسبب مشكلة ، فقد علقت في حالة تأهب ("حصلت هنا".) ؛ كأول جزء من التعليمات البرمجية (انظر أدناه) في وظيفتي $ .getjson ، وهذا لا يطلق النار ، لذا فأنا أعلم أنه ليس ما أفعله بالبيانات التي تسبب خطأ.

$.getJSON('/ajax/cover_flow_detail.ashx?experienceId=' + arguments[0], function(d) {
        alert('Got here'); // doesn't fire ?

        // omitted for brevity.

}

حتى أغرب - هذا يحدث فقط في IE6. IE7 و FF بخير.

أي دفعة في الاتجاه الصحيح سيكون موضع تقدير ، أنا متعثر تماما!

هتاف ، شون

هل كانت مفيدة؟

المحلول

لديك خطأ في JSON - فواصل زائدة في بعض تعريفات الكائن الخاصة بك.

(هذا يشير إلى أنك تقوم بإنشاء JSON باستخدام قالب بدلاً من مكتبة JSON ، وهذا خطأ.)

أي أقل تسامحًا مع هذا الخطأ من المتصفحات الأخرى.

نصائح أخرى

إن برنامج Internet Explorer سيء السمعة لكسر الفواصل الزائدة.

var obj = {
     upper: 1,
     stage: 2,
};

يفشل على IE ، في حين أن المتصفحات الأخرى تتجاهل الفاصلة الفاصلة بعد العنصر الثاني.

ومن المفارقات أنه يجب أن يكون يخطئ. أي فعلت ذلك بشكل صحيح. لا ينبغي للمتصفحات تحليل JSON بشكل فضفاض إذا لم يكن بناء الجملة صحيحًا. يجب أن يعامل مثل أ ؛ من ثم.

أعتقد أنه هو المحلل ، لأنه في تحويلة JS ، إنه صارم.

تذكر أنه عندما يتم تجاهل علامات HTML التي تم إغلاقها بشكل سيء من قبل IE ، وليس Netscape. مثيرة للاهتمام في الدوران.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top