Axios: في وقت ما response.data عبارة عن سلسلة بدلا من كائن

تم إنشاؤها على ١٣ أغسطس ٢٠١٨  ·  43تعليقات  ·  مصدر: axios/axios

لا أعرف لماذا ولكن باستخدام نفس واجهة برمجة التطبيقات ، تكون بيانات استجابة أكسيوس أحيانًا عبارة عن سلسلة بدلاً من كائن. انظر الشكل أدناه.

image

مفهوم

  • إصدار أكسيوس: 0.18.0
  • البيئة: React original Expo SDK 29، window 10

التعليق الأكثر فائدة

لقد اكتشفت أن هذا يحدث عندما تكون استجابة json من الخادم غير صالحة ، فاستخدم مدقق json مثل https://jsonlint.com/ للتأكد من تنسيق json الخاص بك بشكل صحيح

ال 43 كومينتر

@ huy-lv ،

هل content-type هو نفسه لكلا الردين؟

robmcguinness @ نعم ، إنه application / json

أرى نفس السلوك. لقد وجدت أنه في حالتي ، قد تحتوي استجابة واجهة برمجة التطبيقات أحيانًا على بيانات JSON غير صالحة ، على سبيل المثال ، قد يتم طرح JSON.parse . لسبب ما ، يبدو أن Axios يبتلع هذا الخطأ ، وينتهي الأمر بإعداد سلسلة JSON غير الصالحة على الخاصية data .

لدي هذه المشكلة أيضا. عندما أتحقق من response.data لحالة المشكلة ، تمت إضافة بعض بيانات JSON غير الصالحة مثل " إلى الاستجابة ، مما يجعل JSON.parse يحتوي على خطأ ويعيد السلسلة.

لقد تحققت مع Axios و XMLHttpRequest و fetch
1. / حصلت Axios و XMLHttpRequest على نفس المشكلة
2. / إحضار العمل بشكل مثالي

أعلم أن هناك بعض الأحرف يمكن أن تؤدي إلى هذه المشكلة ، فقط بحاجة للتأكد.
هل يمكنك التقاط الرد وإرفاقه كملف؟

OpenGG آسف لتأخر الرد ، ما تحتاجه هنا: د
https://1drv.ms/t/s!AnakDtCf8CG5hIgn2Hemy6zanFi50Q

@ huy-lv ليس ما أتوقعه. يرجى حفظ الاستجابة مع curl ، ثم إرفاق الملف المحفوظ عن طريق إفلاته في منطقة الرد الخاصة بهذه المشكلة.

@ huy-lv

لا تهتم ، وجدتها.
لقد قمت بلصقه على الجوهر وحاولت التحميل باستخدام أكسيوس ، ولا يمكنني رؤية أي خطأ.

ملف: https://gist.github.com/OpenGG/ac72e79f9ef088e993213473116c0cd0
العرض التوضيحي: https://codepen.io/OpenGG/pen/bxEqKL

أعلم أن هذه المشكلة لا تحدث طوال الوقت ، إنها حوالي مرة إلى مرتين لكل 10 طلبات (نفس واجهة برمجة التطبيقات ، نفس الاستجابة)

OpenGG يحدث ذلك على

تضمين التغريدة

هل يمكنك عمل عرض توضيحي عبر الإنترنت في المعرض ومشاركته؟ يجب أن يقدم هذا العرض التوضيحي نفس الطلب مع كل من Axios و XMLHttpRequest لتحديد ما إذا كان Axios أو RN يسببان هذه المشكلة.

OpenGG هل يمكن أن تعطيني بريدك سأرسل لك api ، لا يمكنني نشر ذلك
https://github.com/nighttiger1990/axiosBug.git

أي حظ في هذه القضية؟ أنا أواجهها أيضًا

Druthi الآن أستخدم "جلب" بدلاً من "أكسيوس"

أي تحديث؟

قد لا تكون هذه حالتك ولكن في حالتي:
سلسلة استجابة API الخاصة بي ليست JSON صالحة ، لذلك لا يمكن تحليل axios إلى JSON ، ثم تقوم بإرجاع سلسلة أولية بدلاً من ذلك.

لقد قمت بترحيل تطبيقي (redux-saga ، axios) إلى webpack4 والآن أصبحت response.data سلسلة بدلاً من كائن. تغييرات الترحيل التي أجريتها قليلة جدًا ليتم تجميعها بنجاح
package.json
"حزمة الويب": "^ 4.29.6" ،
"webpack-cli": "^ 3.3.0"،
"webpack-dev-middleware": "^ 3.6.1" ،
"webpack-dev-server": "^ 3.2.1"
"أداة تحميل الملفات": "^ 3.0.1"،

webpack-config.js
الوضع الإضافي: "تطوير" ، إلى module.exports
علق بالألوان: صحيح ، في devServer
علق من json-loader

قمت بتشغيل JSON.parse (response.data) و JSON تالف. (رمز غير متوقع: في JSON في الموضع 8181)

            "municipality": "ddrNote": ""      should be

            "municipality": "",
            "addrNote": ""

لقد قارنت مع رمز webpack3 الخاص بي قبل الترحيل حيث يكون JSON في response.data على ما يرام (كائن). لذا فإن الكود الذي تم ترحيله ينجح في إتلاف JSON في response.data وهذا هو سبب ظهوره كسلسلة. إذن السؤال الآن هو لماذا JSON تالف

لقد قمت بحل المشكلة عن طريق الرجوع إلى إصدار "webpack-dev-server": "3.1.10"

لدي وكيل devServer والذي أعتقد أنه سبب تلف الاستجابة للإصدارات الأكبر من 3.1.10

petercutting إنها أيضًا مشكلة في بيئة الإنتاج ، ألم تلاحظ؟

nyilmaz تبين أن مشكلتي ناتجة عن webpack-dev-server. لن يتم استخدام webpack-dev-server في بيئة الإنتاج

petercutting هل فتحت مشكلة ضد webpack-dev-server؟ لم أجد على.

تضمين التغريدة على الاغلب لا

بصرف النظر عن مشكلات خادم webpack-dev-server ، يجب ألا تبتلع Axios بصمت استثناءات JSON.parse ، أليس كذلك؟

كنت فقط أختبر قوة التطبيق عن طريق إرسال JSON المشوه من الخلفية. يفشل طلب Axios بصمت في فك تشفير JSON. لا يزال العنوان content-type يقول "application/json" ، لكن response.data هو السلسلة الأولية التي لم يتم تحليلها ، وتعطل تطبيقي بشكل غير متوقع كمتابعة.

من الجنون تمامًا أن مكتبة بها 60 ألف نجم بها خطأ أساسي لمدة نصف عام: مرتبك:

بغض النظر عن مشكلات خادم webpack-dev-server ، يجب ألا يبتلع Axios بصمت استثناءات JSON.parse ، أليس كذلك؟

صالحة تماما

أي تحديث لهذا الخطأ للرد الأصلي !؟

لقد اكتشفت أن هذا يحدث عندما تكون استجابة json من الخادم غير صالحة ، فاستخدم مدقق json مثل https://jsonlint.com/ للتأكد من تنسيق json الخاص بك بشكل صحيح

يتم تتبع مشكلة ابتلاع الخطأ ، وسأغلق هذه المشكلة لأنها في الأساس نسخة مكررة منها.

يرجى التواصل إذا كان لديك أي أسئلة.

@ fed135 يرجى ربط المشكلة ذات الصلة إن وجدت ، شكرًا.

هل قام أي شخص بحل هذا حتى الآن ؟، أنا أستخدم Laravel كواجهة برمجة تطبيقات خاصة بي ، لذلك قمت بتسجيل ردي قبل إرسالها إلى تطبيقي. الاستجابة المسجلة عبارة عن JSON صالح ولكن الاستجابة المستلمة بها قوس "}" الأخير مفقود في النهاية ، مما يجعلها استجابة غير صالحة. لا أعرف لماذا يتصرف هذا على هذا النحو على تطبيق الهاتف المحمول الخاص بي ، لأن تطبيق الواجهة الأمامية الذي يستخدم أكسيوس أيضًا يعمل بشكل جيد ، وقد جرب على ساعي البريد أيضًا ، إنه يعمل بشكل جيد. أي أفكار أو حلول من فضلك؟

يحدث ذلك عندما تصبح البيانات كبيرة جدًا: (لم أواجه أي مشاكل لأن مصفوفة البيانات كانت صغيرة!

matinzd أقوم

matinzd وأيضًا ، يستخدم تطبيق fronend الخاص بي نفس نقطة النهاية ، ولا يواجه ذلك ، فقط تطبيق الجوال الذي يحتوي على رد فعل أصلي يفعل أحيانًا

@ fed135 هل هذه هي المشكلة الصحيحة التي يجب تتبعها كمتابعة؟ رقم 61

من فضلك بلدي Laravel api يخرج كسلسلة جنبًا إلى جنب

لقد وجدت أخيرًا حلاً لي.
البيانات التي كنت أحصل عليها كانت ===

لدي نفس الخطأ
:(

حصلت على نفس المشكلة ، بعد تسجيل الدخول إلى jsonlint.com ، لدي البيانات مع NaN والتي لا تستطيع json تحليلها على النحو التالي. لذلك نحتاج إلى التأكد من أن الواجهة الخلفية الخاصة بنا أرسلت بيانات JSON الصالحة.

Error: Parse error on line 186:
...,    "position_name": NaN,   "group_name": 
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'

نفس الخطأ الذي يمكنه إصلاحه: |

☝️ لقد قمت بإجراء علاقات عامة سريعة لمعالجة هذه المشكلة. نأمل أن يساعد

الحصول على هذه المشكلة في رد الفعل الأصلي مع أكسيوس 0.19.2
أي تعديل حدث في القضية؟

لقد حصلت على نفس المشكلة ، لقد حللت هذه المشكلة وأجري تغييرًا في طريقة المحاور ، إذا كان لديك طريقة "GET" ، فلا يمكنك إرسال الجسم لأنه يمكنك الحصول على هذه المشكلة ، ولحل هذه المشكلة تحتاج إلى التغيير إلى "POST" وستكون كذلك أن يكون العمل

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات