سؤال

لدي رمز HTML:

<button>asd</button>
<script type = "text/javascript">
$('button').click(
    function() {
        $.getJSON('/schedule/test/', function(json) {
            alert('json: ' + json + ' ...');
        });
    }
);
</script>

وجهة نظر المقابلة:

def test(request):
    if request.method == 'GET':
        json = simplejson.dumps('hello world!')
        return HttpResponse(json, mimetype = 'application/json')

يتم تنفيذ الرأي (اختبار باستخدام print), json يتم تهيئة المتغير ولكن لا يوجد تنبيه يظهر. أي خطأ ارتكبت؟ لقد رأيت بالفعل بعض المستندات على هذا (http://docs.jquery.com/ajax/jquery.getjson#uerldataCallback. على سبيل المثال) ولكن لم أجد إجابة.

تحرير: كانت المشكلة، ذلك HttpResponse لم يتم استيرادها ... لسوء الحظ، لم يعط Django أي خطأ حول هذا الموضوع. كل شيء آخر كان صحيحا. مع تحياتي
chriss.

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

المحلول

من المحتمل أن يتم تشكيل JSON بشكل صحيح. في بعض الأحيان يحدث هذا لي عندما يكون التعليمات البرمجية، التي يجب أن تنتج JSON إنشاء خطأ. خيارين:

  • استخدم Firebug لعرض استجابة JSON

  • خطأ في التعامل مع خطأ في رمز مسج الخاص بك باستخدام خيارات JQuery.ajaxsetup مثل:

      $.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) {   
          alert(textStatus);
          alert(errorThrown);
          alert(XMLHttpRequest.responseText);
      }});
    

باستخدام التعامل مع الأخطاء لتصحيح الأخطاء أمر رائع، لأنك ستعرف على الفور عندما تكون هناك مشكلة في إجابتك. يمكنك التحقق من مستندات مسج ل JQuery.ajax التي لديها جميع الخيارات المتاحة ل JQuery.ajaxsetup.

تحرير: الخيار الثالث سيكون مجرد فتح عنوان URL الذي يجب أن يولد JSON وتشغيل الإخراج من خلال json lint. للتحقق من صحة ذلك.

نصائح أخرى

هل أنت متأكد من أن JSON صالح؟ إلقاء نظرة على الاستجابة مباشرة أو استخدام firebug

لقد ركضت هذا لفترة من الوقت مرة أخرى وإعادة كتابة مجمع لأجاكس jQuery الذي يسمح لك بتمرير GetJson العادي وعدل خطأ إضافي لكل GET.

http://www.nureelm.com/theanual/2012/0/09/self-indulgent-code-jquery-getjson-with-error-handling/

أعتقد أنك تفتقد نمط URL زائدة.

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