سؤال

باستخدام 1.4.1 مقابل Android بموجب Windows 7. لديّ خدمة ويب يمكن الوصول إليها من تطبيق Titanium ، تُرجع الخدمة JSON مثل هذا:

{
    "VFPData": {
        "rows": [
            {
                "address1": "Orion House",
                "address2": "Orion Way",
                "address3": "Kettering",
                "address4": "Northants",
                "comp_name": "Orion Vehicles Leasing",
                "contid": 1,
                "email": "",
                "email2": "",
                "fax": "",
                "firstname": "David John",
                "lastname": "Sear",
                "mobile": "",
                "phone1": "",
                "phone2": "",
                "postcode": "NN15 6PE"
            },
            {
                "address1": "Unit 20 Acton Business Park",
                "address2": "Acton Lane",
                "address3": "London",
                "address4": "",
                "comp_name": "Orion Vehicles Limited",
                "contid": 2,
                "email": "Mark@ovl.co.uk",
                "email2": "",
                "fax": "",
                "firstname": "Mark",
                "lastname": "Johnson",
                "mobile": "0888 566 67879",
                "phone1": "0208 209 1359",
                "phone2": "",
                "postcode": "NW10 7NH"
            }
        ]
    }
}

ومع ذلك ، لن يعيد أي مزيج من eval أو json.parse نتيجة صالحة - على سبيل المثال:

var contacts = JSON.parse(this.responseText);
alert(contacts.length);

سيظهر ذلك حوار تنبيه مع عدم وجود شيء فيه. مكالمات التيتانيوم httpclient تعمل بشكل جيد قدر الإمكان

Ti.debug(this.responseText) 

مع عدم وجود مشكلة.

أن JSON يتحقق موافق أيضًا ، في jsonlint.com على سبيل المثال.

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

المحلول

تبدو JSON جيدة ، وتواجهات جيدة ... ولكن هو الخط:

alert(contacts.length);

الجزء الوحيد الذي يقودك إلى الاعتقاد بأنه لا يعمل؟ نظرًا لأنه لا يمكنك الحصول على طول كائن (VFPDATA) ... ستحصل على غير محدد/فارغ سواء حدث تحليل صالح أم لا. اختبار أفضل هو:

alert(contacts.VFPData.rows.length);

... بما أنك تعرف الصفوف هي صفيف. أو:

alert(contacts);

الذي يجب أن يبلغ عن أنه كائن (إذا تم تحليله) أو فارغ/غير محدد خلاف ذلك.

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