javascript jQuery: AJAX কল সাফল্যের পরে তথ্য ফেরত




(4)

ফাংশন থেকে ডেটা ফেরত দেওয়ার একমাত্র উপায় একটি অ্যাসিঙ্ক্রোনাস কল পরিবর্তে একটি সিঙ্ক্রোনাস কল করতে হবে, তবে এটি প্রতিক্রিয়াটির জন্য অপেক্ষা করার সময় ব্রাউজারটিকে নিশ্চিহ্ন করবে।

আপনি একটি কলব্যাক ফাংশন পাস করতে পারেন যা ফলাফল পরিচালনা করে:

function testAjax(handleData) {
  $.ajax({
    url:"getvalue.php",  
    success:function(data) {
      handleData(data); 
    }
  });
}

এটির মতো কল করুন:

testAjax(function(output){
  // here you use the output
});
// Note: the call won't wait for the result,
// so it will continue with the code here while waiting.

আমার কাছে এমন কিছু আছে, যেখানে এটি একটি স্ক্রিপ্টের জন্য একটি সহজ কল যা আমাকে একটি মান, একটি স্ট্রিং দেয় ..

function testAjax() {
    $.ajax({
      url: "getvalue.php",  
      success: function(data) {
         return data; 
      }
   });
}

কিন্তু আমি এই মত কিছু কল

var output = testAjax(svar);  // output will be undefined...

তাই আমি কিভাবে মূল্য ফেরত দিতে পারি? নিচের কোডটি কাজ করছে বলে মনে হচ্ছে না ...

function testAjax() {
    $.ajax({
      url: "getvalue.php",  
      success: function(data) {

      }
   });
   return data; 
}

Jquery ডক্স উদাহরণ দেখুন: http://api.jquery.com/jQuery.ajax/ (প্রায় ২/3 পৃষ্ঠা)

আপনি নিম্নলিখিত কোড খুঁজছেন হতে পারে:

    $.ajax({
     url: 'ajax/test.html',
     success: function(data) {
     $('.result').html(data);
     alert('Load was performed.');
   }
});

একই পাতা ... নিচে নিচে।


আপনি মিথ্যা হিসাবে async বিকল্প যোগ করতে পারেন এবং AJAX কল বাইরে ফিরে।

function testAjax() {
    var result="";
    $.ajax({
      url:"getvalue.php",
      async: false,  
      success:function(data) {
         result = data; 
      }
   });
   return result;
}

আইডিকে যদি আপনি এটি সমাধান করেন কিন্তু আমি এটি করার অন্য উপায়টি সুপারিশ করি, এবং এটি কাজ করে :)

    ServiceUtil = ig.Class.extend({
        base_url : 'someurl',

        sendRequest: function(request)
        {
            var url = this.base_url + request;
            var requestVar = new XMLHttpRequest();
            dataGet = false;

            $.ajax({
                url: url,
                async: false,
                type: "get",
                success: function(data){
                    ServiceUtil.objDataReturned = data;
                }
            });
            return ServiceUtil.objDataReturned;                
        }
    })

সুতরাং এখানে মূল ধারণা হল, async যোগ করে: মিথ্যা, তারপর আপনি তথ্য পুনরুদ্ধার না হওয়া পর্যন্ত সবকিছু অপেক্ষা করে। তারপর আপনি ক্লাসের স্ট্যাটিক পরিবর্তনশীল এটি বরাদ্দ করুন, এবং সবকিছু জাদু কাজ করে :)





ajax