سؤال


$.getJSON('http://twitter.com/followers/ids.json?screen_name=/…'+ query1 + '&callback=?',
  function(data) {
    alert('JSON data string 1 is: '+data); 
    $.getJSON('http://twitter.com/followers/ids.json?screen_name=/…'+ query2 + '&callback=?', 
      function(data1) {
        alert('JSON data string 2 is: '+data1); 
        f2=data1; 
        f1=data; 
        for(var i=0; i "less than" f1.length; i++)
        {
          for(var j=0; j "less than" f2.length; i++)
          {
            if (f1[i] == f2[j])
            {
              common[c]=f1[i];
              c+=1;
            }
          }
        }
        $('#content').append(''+common.length+'');//this line is not working though....... 
    });
});

في هذه القطعة من الخط

$('#content').append(''+common.length+'');

لا يظهر الإخراج فعلا هو معلقة الصفحة

سيكون موضع تقدير أي مساعدة.

شكرا

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

المحلول

لا تزيل المكالمات. يمكنك أيضا تجنب بعض مشكلات الذاكرة حيث تحتفظ JavaScript بنسخة من جميع المتغيرات المحلية لكل وظيفة مجهولة. من خلال جعل المكالمتين بشكل منفصل، يمكنك أيضا إجراء المكالمات مرة واحدة بدلا من التتابع.

هذه طريقة أفضل إذا فهمت هدفك. بالإضافة إلى الاقتراع Gota و GotB، يمكنك حتى أن تجعل "انتظار" لطيفة قليلا "إخطار للمستخدمين.

تحرير: تمت إضافته للحصول على حلقة حلقة من الإجابة السابقة.

var gotA, gotB;
var followingA, followingB;
function getCommonFollowers(user1, user2)
{
    gotA = false;
    gotB = false;
    jQuery.getJSON('http://twitter.com/followers/ids.json?screen_name=/…'+ user1 + '&callback=?', gotFollowersOfA );
    jQuery.getJSON('http://twitter.com/followers/ids.json?screen_name=/…'+ user2 + '&callback=?', gotFollowerOfB );
}
function gotFollowersOfA(data)
{
    followingA = data;
    gotA = true;
    if (gotB) {
        compareFollowersAB();
    }
}
function gotFollowersOfB(data)
{
    followingB = data;
    gotB = true;
    if (gotA) {
        compareFollowersAB();
    }
}
function compareFollowersAB()
{
    f2=followingA; 
    f1=followingB; 
    for(var i=0; i < f1.length; i++) {
        for(var j=0; j < f2.length; j++) {
            if (f1[i] == f2[j]) {
                //console.log("Adding f1[i]");
                common.push(f1[i]);
            }
        }
    }
    $('#content').append(''+common.length+'');
}

نصائح أخرى

ثاني لزيادات حلقة أنا بدلا من ي.

أنت لا تعلن عن أي من الفارغ التي قد تؤدي إلى قضايا النطاق وما إلى ذلك.

يمكنك لصق الكود الفعلي الخاص بك، والطلب الصعب توقع أن يتوقع أي شخص تشخيص المشكلة دون البرنامج النصي الخاص بك.

قم أيضا بإنشاء تجريبي للقضية في JSBIN.com أو pastebin.me أثناء ذلك.

يجب عليك بالتأكيد استخدام سلحفاة كبيرةتوصيات، ولكن منذ أن حاولت أنه على أي حال، إليك نسخة معدلة من التعليمات البرمجية التي تعمل:

        var query1 = 'user1';
        var query2 = 'user2';
        var data;
        var data1; 
        var f1;
        var f2;
        var common = [];
        var c = 0;

        $(document).ready(function() {
            $.getJSON('http://twitter.com/followers/ids.json?screen_name=' + query1 + '&callback=?', 
                function(data) { 
                console.log('JSON data string 1 is: ' + data); 
                $.getJSON('http://twitter.com/followers/ids.json?screen_name=' + query2 + '&callback=?', 
                    function(data1) { 
                    console.log('JSON data string 2 is: ' + data1); 
                    f2=data1; 
                    f1=data; 
                    for(var i=0; i < f1.length; i++) {
                        for(var j=0; j < f2.length; j++) {
                            if (f1[i] == f2[j]) {
                                //console.log("Adding f1[i]");
                                common.push(f1[i]);
                            }
                        }
                    }
                    $('#content').append(''+common.length+'');
                }); 
            });
        });

كان الإصلاح الرئيسي أن 2nd Loop الخاص بك، كما ذكرنا سابقا، استخدم I ++ بدلا من j ++، لذلك كانت حلقاتك مجنونة.

لاحظ أنني قمت بتغيير مكالمات التنبيه الخاصة بك إلى Console.Log، لذا تأكد من أنك تستخدم Firefox مع تثبيت Firebug، أو ببساطة استبدال Console.log مع تنبيهك مرة أخرى.

لا ينبغي أن يكون مع "http: //"؟

$.getJSON('http://twitter.com...'

أعلن المتغير الشائع خارج وظائف JSON.

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