هل يمكنني استخدام ثابت (أي محددة سلفا) رد اسم الدالة عند طلب JSONP مع مسج؟

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

سؤال

ثائق مسج يسرد المثال التالي استخدام $ .getJSON لطلب JSONP :

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
  function(data) {
    $.each(data.items, function(i,item) {
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if (i == 3) return false;
    });
  });

وبدلا من استخدام هذا الأسلوب، الذي يولد دينامية اسم الدالة الاستدعاء بسبب هذه المعلمة:

jsoncallback=?

وأريد أن أكون قادرة على ضبط ذلك مسبقا لاسم دالة ضمني، مثل هذا:

jsoncallback=test

وهذا يعمل، بمعنى أنني تشغيل البرنامج النصي وJSONP أن أعود والكائن JSON ملفوفة في استدعاء اختبار ().

ولكن، وأنا لا يمكن معرفة كيفية إعداد وظيفة رد الاتصال. لا ينبغي أن تكون بسيطة مثل هذا؟

function test(data) {
  console.log(data);
}

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=test");

وعندما أحاول أن أعود لJSONP التي ملفوفة في اختبار ()، ولكن اختبار وظيفة () التي كنت تعرف ما يسمى أبدا. أنا شيء مفقود؟

وشكرا على اي مساعدة!

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

المحلول

المحددة في وثائق لتتمكن من استخدام الأسلوب التالي

jQuery.getJSON(...)

وتحتاج إلى تحديد callback=? عند إجراء مكالمة JSONP. وعادة ما يستخدم هذا فقط لأنواع استجابة "سلمان". لأنواع استجابة "jsonp"، التي تريد استخدامها:

jQuery.get(...)

ووتحديد type باسم "jsonp". انظر هذا على الموضوع و. ولكن هذا لا بد أيضا من حقيقة وجود لديك callback=?.

ما أعتقد أنك تبحث عن هذا :

jQuery.getScript(...)

والتي ينبغي تنفيذها أيا كانت الطريقة التي عرفتها في callback الخاص بك.

نصائح أخرى

وآه، حفظ "ذات صلة" قسم الشريط الجانبي لي هنا. بعد أن قدمت هذا السؤال، وجدت واحدة مماثلة طلبت بالفعل:

باستخدام وظيفة يدعى الاستدعاء ل$ .getJSON في مسج لتلبية مطالب الفيسبوك توقيع طلب

والجواب دنكان من 15 أكتوبر حل هذا بالنسبة لي:

window.fixed_callback = function(data){
  alert(data.title);
};

$(function() {
  $.getScript("http://api.flickr.com/services/feeds/photos_public.gne?tags=cats&tagmode=any&format=json&jsoncallback=fixed_callback", function(data) {
  alert('done'); } );
});

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

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