سؤال

أنا أحاول الحصول على رد الاتصال من هذا:

$.getScript( 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script', function(data)
{
  alert(data);
});

لكن التنبيه يعود فقط في حالة تأهب مع "غير محدد"؟ وحاولت أيضا:

$.getScript( 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script&callback=?', function(data)
{
  alert(data);
});

ثم لا يعيد أي تنبيه على الإطلاق. (أعتقد أن الوظيفة لا تعمل).

لكن .... إذا فعلت:

$.getScript( 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script&callback=myfunction');

ثم لديك:

function myfunction ( data ) { alert(data); }

ثم يعمل ويعيد البيانات كيف أردت. لكني لا أرغب في القيام بذلك.

كيف يمكن حل هذا؟

حاول هذا أيضًا:

        var URL = 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script';
        $.ajax({
        url: URL,
        dataType: 'jsonp',
        jsonpCallback: 'youtubeFetchDataCallback'
        });

ولكن أين يجب أن يكون لدي وظيفة وتنبيه البيانات من رد الاتصال؟

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

المحلول

ال getScript يتم استخدام الطريقة لتنفيذ البرنامج النصي الذي تم إرجاعه. بحلول الوقت الذي يصل فيه إلى رد الاتصال الخاص بك ، سيتم بالفعل تشغيل البرنامج النصي. إذا كنت تقوم بالفعل بإرجاع البيانات ، على سبيل المثال ، يجب أن تستخدم getjson لتقديم طلب المجال المتقاطع الخاص بك ، مع نوع البيانات من jsonp. إذا كنت تحصل حقًا على برنامج نصي يعمل على صفحتك ، فلن تحتاج فعليًا إلى وظيفة رد الاتصال.

نقلاً عن المستندات:

يتم تمرير رد الاتصال ملف JavaScript الذي تم إرجاعه. هذا غير مفيد عمومًا لأن البرنامج النصي سيستمر بالفعل في هذه المرحلة.

استخدام getJSON قد يبدو الأمر (لاحظ أنني قمت بتقسيم السلسلة لجعلها أكثر قابلية للقراءة)

var url = 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>';
$.getJSON( url + '?v=2&alt=json-in-script&callback=?', 
    function(data) {
        alert(data);
});

نصائح أخرى

للقيام بطلب JSONP في jQuery ، وهو ، كما أعتقد ، ما تحاول القيام به ، القيام بما يلي:

$.ajax({
    url: 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script',
    type: 'GET',
    dataType: 'jsonp',
    success: function(data) {
        alert(data);
    }
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top