لا يتم تنفيذ رد الاتصال ، على الرغم من أن الطلب يعمل بشكل جيد مع JQuery Getjson

StackOverflow https://stackoverflow.com/questions/1567108

  •  21-09-2019
  •  | 
  •  

سؤال

أحاول الحصول على قائمة الأصول (عبر JSON) داخل قطرة باستخدام مجاني Drop.io الحساب.

لاحظ أنني نظرت بالفعل إلى السؤالين الآخرين (السؤال رقم 1 و السؤال 2) فيما يتعلق بهذا ولم يقدم أي منهما حلًا.

    var dropName = escape("greganddonny");
            var apiKey = "some key I'm not displaying it here...";
            var version = "2.0";

    var assetsListBaseURL = "http://api.drop.io/drops/greganddonny/assets.json?api_key=" + apiKey + "&version=" + version;

    var resultingdata = null;

    function getFileList() {
        console.log("BEGIN: getFileList()");
        var surl = assetsListBaseURL + '&callback=?';

        $.getJSON(surl, function(data, textStatus) {
            console.log("textStatus:" + textStatus);
            console.log("BEGIN: Callback()");
            resultingdata = data;
            showResult();
            console.log("END: Callback()"); 
    });

        console.log("END: getFileList()");
    }

    function showResult()
    {
        alert(resultingdata);
    }

    $(document).ready(function() {
        console.log("BEGIN: document.ready");
            $.ajaxSetup({
            "error": function(XMLHttpRequest,textStatus, errorThrown) {   
              alert(textStatus);
              alert(errorThrown);
              alert(XMLHttpRequest.responseText);
              }
            })

            $("#search").click(function() {getFileList();});
        console.log("END: document.ready");
    });

عندما يتم النقر فوق زر البحث الموجود على الصفحة ، فإن هذا يؤدي إلى تشغيل وظيفة getFilelist (). وفقًا لـ Firebug Console ، تسمى وظيفة getFilelist () على ما يرام.

يتم تقديم طلب JSON أيضًا بنجاح حيث تعرض علامة التبويب NET الخاصة بـ Firebug Console حالة 200ok عندما أتصل Assets.json على موقع Drop.io. أتلقى أيضًا الإرجاع التالي JSON في قائمة الطلبات في علامة التبويب "NET":

    [{"converted":"http:\/\/drop.io\/download\/public\/x0yfnmzdtet1vtxesqcm\/12a9ebc74c9a3e4e3b2e2b4ea3546b919a2519ff\/df43d2b0-926f-012c-26c2-fbe072d62af6\/2a0a5270-9270-012c-8fc9-fbfd417303a8\/v2\/content","type":"audio","status":"converted","title":"MikeAndAndyOnPhone2009.MP3","duration":118,"artist":"Unknown","created_at":"2009/10/03 17:29:02 +0000","filesize":1895424,"description":null,"track_title":"Unknown","hidden_url":"http:\/\/drop.io\/hidden\/sazpcf7522exzb\/asset\/bWlrZWFuZGFuZHlvbnBob25lMjAwOS1tcDM=","name":"mikeandandyonphone2009-mp3"}]

لقد قمت بالتحقق من صحة الكتلة أعلاه من JSON التي تم إرجاعها باستخدام jsonlint ويبلغ التقارير أن JSON REDARD صالحة بالفعل ، يمكنك اختبار ذلك عن طريق نسخ ولصق الكتلة أعلاه.

لقد جربت كل ما أعرفه كيف أجربه ، حتى أنني أضفت خيارًا "خطأ" إلى طريقة $ .ajaxsetup وما زلت لم أحصل على أي نجاح في إرجاع رسالة خطأ حول سبب عدم وجود وظيفة رد الاتصال الخاصة بي اتصل.

اي فكرة حول السبب لحصول هذا؟ يمكنك اختبار البرنامج النصي الخاص بي هنا

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

المحلول

يتطلب JSONP من الخادم دعم طلبات JSONP. ولكن إذا قمت بزيارة

http://api.drop.io/drops/greganddonny/assets.json?api_key=API_KEY_HERE&version=2.0&callback=x

يبدو المستند الذي تم إرجاعه [{"converted..) على الرغم من أنه يجب أن يبدو x([{"converted"..) بسبب x أتصل مرة أخرى.

فيما يبدو Drop.io لا يدعم JSONP (الوثائق لا تخبر ذلك أيضًا). الخيار الوحيد الذي تبقى لك هو النهج الكلاسيكي لمجال JS: استخدم وكيل.

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