async: false
কল করার সময় কি সেট করা সম্ভব হয় $.getJSON()
যাতে কল অ্যাসিঙ্ক্রোনাস হওয়ার চেয়ে ব্লক হয়ে যায়?
async: false
কল করার সময় কি সেট করা সম্ভব হয় $.getJSON()
যাতে কল অ্যাসিঙ্ক্রোনাস হওয়ার চেয়ে ব্লক হয়ে যায়?
উত্তর:
আপনার $.ajax()
কাছে এটির জন্য সিঙ্ক্রোনালিভাবে কলটি করতে হবে:
$.ajax({
url: myUrl,
dataType: 'json',
async: false,
data: myData,
success: function(data) {
//stuff
//...
}
});
এটি বর্তমানে এটির $.getJSON()
মতো ব্যবহার করে মিলবে :
$.getJSON(myUrl, myData, function(data) {
//stuff
//...
});
type: 'POST'
এটিকে একটি পোস্টে পরিণত করার পাশাপাশি একটি বিকল্প যুক্ত করতে চাইবেন - যদিও async: false
আপনার সত্যিকারের প্রয়োজন না হলে আপনি ব্যবহার করতে চান না - এটি ইউআই লকআপ করবে।
উভয় উত্তর ভুল। আপনি পারেন। আপনাকে কল করা দরকার
$.ajaxSetup({
async: false
});
আপনার json আজাক্স কল আগে। এবং আপনি কল পুনরায় সংঘর্ষের পরে এটিকে সত্যতে সেট করতে পারেন (যদি পৃষ্ঠায় অজ্যাক্সের অন্যান্য ব্যবহারগুলি থাকে তবে আপনি যদি এ্যাসএনসি চান তবে)
$.ajax
(এবং পরবর্তী সাধারণভাবে সংক্ষেপে চাদরে অর্থাৎ $.getJSON
, $.get
ইত্যাদি) সমলয় যাবে। তদুপরি, ডকুমেন্টেশন এমনকি এটি ব্যবহার না করার পরামর্শ দেয়: "বিবরণ: ভবিষ্যতের অ্যাজাক্স অনুরোধগুলির জন্য ডিফল্ট মান সেট করুন Its এটির ব্যবহারের প্রস্তাব দেওয়া হয় না।"
আমার ক্ষেত্রে, জে ডি ঠিক বলেছেন। কল করার আগে আমাকে এটি যুক্ত করতে হবে।
$.ajaxSetup({
async: false
});
আমার আগের কোডটিতে আমার কাছে এটি রয়েছে:
var jsonData= (function() {
var result;
$.ajax({
type:'GET',
url:'data.txt',
dataType:'json',
async:false,
success:function(data){
result = data;
}
});
return result;
})();
alert(JSON.stringify(jsonData));
এটি অনুসন্ধান কাজ করে। তারপর আমি পরিবর্তন
var jsonData= (function() {
var result;
$.getJSON('data.txt', {}, function(data){
result = data;
});
return result;
})();
alert(JSON.stringify(jsonData));
সতর্কতা অবধারিত।
আমি যদি এই তিনটি লাইন যুক্ত করি তবে সতর্কতাটি আবার ডেটা দেখায়।
$.ajaxSetup({
async: false
});
var jsonData= (function() {
var result;
$.getJSON('data.txt', {}, function(data){
result = data;
});
return result;
})();
alert(JSON.stringify(jsonData));
আমি মনে করি না আপনি সেখানে এই বিকল্পটি সেট করতে পারেন। আপনাকে উপযুক্ত প্যারামিটারগুলির সাথে jQuery.ajax () ব্যবহার করতে হবে (মূলত getJSON কেবল সেই কলটিকে একটি সহজ এপিআইতে মোড়বে, পাশাপাশি)।
আপনার নিজস্ব রোল
function syncJSON(i_url, callback) {
$.ajax({
type: "POST",
async: false,
url: i_url,
contentType: "application/json",
dataType: "json",
success: function (msg) { callback(msg) },
error: function (msg) { alert('error : ' + msg.d); }
});
}
syncJSON("/pathToYourResouce", function (msg) {
console.log(msg);
})