2011-01-06 16 views
6

के भीतर भूल जाओ कुछ कोड मुझे परेशानी हो रही है। असल में, मैं एक वैश्विक चर (var playlist = []) के रूप में एक खाली सरणी को परिभाषित कर रहा हूं और फिर jQuery $ .get कॉल में तत्वों को जोड़ने की कोशिश कर रहा हूं। मैंने इंटरनेट पर जो पढ़ा है, उससे मुझे यह करने में सक्षम होना चाहिए! निम्न कोड त्रुटि देता है: "अपरिभाषित की विधि 'प्ले' कॉल नहीं कर सकता"। प्लेलिस्ट [0] फ़ंक्शन के भीतर सेट हो जाती है, $ .get कॉल के भीतर प्लेलिस्ट [0] को अलर्ट करना अपेक्षित परिणाम देता है, लेकिन यह फ़ंक्शन के बाहर नहीं रहता है।

var playlist = []; 
function playArtist(artist){ 
    $.get('media/songs/' + artist, 
    function(data){ 
     for (var i in data){ 
     playlist[i] = setSong(data[i].Resource.name,'track' + data[i].Media.id,i + 1); 
     } 
    $('#track-total').text(parseInt(playlist.length)); 
    },'json' 
); 
    playlist[0].play(); 
} 

क्या कोई मदद कर सकता है?

धन्यवाद!

उत्तर

2

संभावनाएं हैं, playlist$.get रिटर्न से पहले उपयोग किया जा रहा है - क्योंकि AJAX कॉल असीमित हैं। यह के भीतर सफलता कॉलबैक के भीतर काम करता है क्योंकि अनुरोध पूरा होने के बाद इसे निकाल दिया जाता है, इसलिए इसमें आपके द्वारा अपेक्षित डेटा शामिल होगा।

+0

यूप, $ .get फ़ंक्शन के अंदर प्लेलिस्ट [0] .play() चलती चाल चल रही थी। आपका बहुत बहुत धन्यवाद! – Will

1

.get असीमित है, इसलिए कॉलबैक फ़ंक्शन प्रदान करने की आवश्यकता है। जबकि आपकी प्राप्ति अभी भी प्रक्रिया में है, आप वास्तव में आबादी से पहले, सरणी का उपयोग करने की कोशिश कर रहे हैं।

6

आपको इनमें से कोई भी काम नहीं करना है। मैं अपनी परियोजना के साथ एक ही समस्या में भाग गया। वैश्विक चर को रीसेट करने के लिए सफलतापूर्वक कॉलबैक के अंदर आप जो फ़ंक्शन कॉल करते हैं, वह है। जब तक आप असीमित जावास्क्रिप्ट को गलत पर सेट करते हैं, तब तक यह सही तरीके से काम करेगा। मेरा कोड यहाँ है। आशा करता हूँ की ये काम करेगा।

var exists; 

//function to call inside ajax callback 
function set_exists(x){ 
    exists = x; 
} 

    $.ajax({ 
    url: "check_entity_name.php", 
    type: "POST", 
    async: false, // set to false so order of operations is correct 
    data: {entity_name : entity}, 
    success: function(data){ 
    if(data == true){ 
     set_exists(true); 
    } 
    else{ 
     set_exists(false); 
    } 
    } 
}); 

if(exists == true){ 
    return true; 
} 
else{ 
    return false; 
} 

उम्मीद है कि यह आपकी मदद करता है।

संबंधित मुद्दे