2012-09-18 9 views
6

से वापस नहीं लौटाया गया है क्योंकि मेरा ढांचा बढ़ता है, मैंने इसे मुख्य डिज़ाइन फ़ाइल में छोड़ने के बजाय फ़ाइलों में विभाजित करने का निर्णय लिया है। हालांकि ऐसा करने से एक फ़ंक्शन की वापसी किसी भी मूल्य को वापस नहीं करती है।वेरिएबल AJAX फ़ंक्शन

डेटा खाली नहीं है - अगर मैं जेएस फ़ाइल में मानों को अलर्ट करता हूं तो वे वहां हैं!

कार्य:

var test = get_data(data, destination); 
    notice(test); 

और परीक्षण है:

1 .js फ़ाइल में समारोह (क्रियान्वयन से पहले शामिल किया गया है)

   var lock_get = 0; 
      function get_data(data, destination) 
      { 

       if (lock_get == 0) 
       { 
        lock_get = 1; 
        $.ajax({ 
         type: "POST", 
         url: destination, 
         async: true, 
         data: data, 
         success: function(data) 
         { 
          lock_get = 0; 
          if (data) 
          { 
           return data; 
          } 
         } 
        }); 
       } 
      }; 

तो और यहाँ निष्पादन हिस्सा है खाली ... मैंने पहले से ही लिखने के विभिन्न तरीकों की कोशिश की लेकिन मुझे लगता है कि मैंने जेएस की संभावनाओं को गलत समझा?

+0

async बनाएं: झूठी। – Tuscan

+4

@ टस्कन नं। [Async: झूठी बहिष्कृत है और हमेशा एक बुरा विचार था] (http://api.jquery.com/jQuery.ajax/) –

+0

संभावित डुप्लिकेट [अजाक्स कॉल से प्रतिक्रिया कैसे वापस करें?] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) –

उत्तर

9

आप ऐसा नहीं कर सकते: क्योंकि कॉल असीमित है, get_data फ़ंक्शन AJAX कॉल के परिणाम को वापस नहीं कर सकता है।

आपको क्या करना चाहिए get_data फ़ंक्शन पर कॉलबैक प्रदान करना और कॉलबैक में परिणाम को संभालना है।

function get_data(data, destination, callback) 
     { 

      if (lock_get == 0) 
      { 
       lock_get = 1; 
       $.ajax({ 
        type: "POST", 
        url: destination, 
        async: true, 
        data: data, 
        success: function(data) 
        { 
         lock_get = 0; 
         if (data && callback) 
         { 
          callback(data); 
         } 
        } 
       }); 
      } 
     }; 

और वह है कि यह फोन:

get_data(data, destination, function(test){ 
    notice(test); 
}); 
+0

गंभीरता से धन्यवाद कॉलबैक के बारे में सोच नहीं रहा था! बेशक यह अब काम करता है:) ... –

0

वैकल्पिक रूप से आप तुल्यकालिक AJAX कॉल से लौट सकते हैं, यह आम तौर पर खराब विचार तुल्यकालिक कॉल उपयोग करने के लिए है, लेकिन यह कभी कभी उपयोगी हो सकता है:

http://pratyush-chandra.blogspot.com/2012/04/store-ajax-json-response-into.html

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