আমাকে কি কেউ সাহায্য করতে পারবেন?
আমি success
এবং .done()
এর মধ্যে পার্থক্য বুঝতে সক্ষম নই $.ajax
।
সম্ভব হলে উদাহরণ দিন।
আমাকে কি কেউ সাহায্য করতে পারবেন?
আমি success
এবং .done()
এর মধ্যে পার্থক্য বুঝতে সক্ষম নই $.ajax
।
সম্ভব হলে উদাহরণ দিন।
উত্তর:
সংক্ষেপে, আজাক্স ফাংশন থেকে সাফল্য কলব্যাক ফাংশনটি ডিকউলিং করুন যাতে পরে আপনি মূল কোডটি (পর্যবেক্ষক প্যাটার্ন) পরিবর্তন না করে নিজের হ্যান্ডলার যুক্ত করতে পারেন।
দয়া করে এখান থেকে আরও বিশদ তথ্য পান: https://stackoverflow.com/a/14754681/1049184
success:
প্যারামিটার .success()
হিসাবে এবং এ- তে একটি পদ্ধতির মধ্যে পার্থক্য রয়েছে jqXHR
। দ্বিতীয়টির অবচয় করা হচ্ছে, তবে পূর্বেরটি ওপি সম্পর্কে যা জিজ্ঞাসা করেছিল।
success
শুধুমাত্র এজেএক্স কল সফল হলে আগুন জ্বলতে পারে, অর্থাৎ শেষ পর্যন্ত একটি এইচটিটিপি 200 স্থিতি ফেরত দেয়। সাফল্য নির্বিশেষে error
যদি এটি ব্যর্থ হয় এবং complete
অনুরোধটি শেষ হয়ে যায় তখন আগুন জ্বলে ওঠে।
উপর jQuery এর 1.8 ইন jqXHR
বস্তু (দ্বারা ফিরে $.ajax
) success
প্রতিস্থাপন করা হয়েছে done
, error
সঙ্গে fail
এবং complete
সঙ্গে always
।
তবে আপনার এখনও পুরানো সিনট্যাক্সের সাহায্যে AJAX অনুরোধটি শুরু করতে সক্ষম হওয়া উচিত। সুতরাং এগুলি একই রকম কাজ করে:
// set success action before making the request
$.ajax({
url: '...',
success: function(){
alert('AJAX successful');
}
});
// set success action just after starting the request
var jqxhr = $.ajax( "..." )
.done(function() { alert("success"); });
এই পরিবর্তনটি jQuery 1.5 এর মুলতুবি বস্তুর সাথে সামঞ্জস্যের জন্য । ডিফার্ড (এবং এখন Promise
, যার ক্রোম এবং এফএক্স-এ সম্পূর্ণ নেটিভ ব্রাউজার সমর্থন রয়েছে) আপনাকে অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপগুলি শৃঙ্খলাবদ্ধ করতে দেয়:
$.ajax("parent").
done(function(p) { return $.ajax("child/" + p.id); }).
done(someOtherDeferredFunction).
done(function(c) { alert("success: " + c.name); });
ফাংশনগুলির এই চেইনটি আপনার সাথে থাকা কলব্যাকের নেস্টেড পিরামিডের চেয়ে বজায় রাখা আরও সহজ success
।
তবে দয়া করে নোট করুন যে পরিবর্তিত বাক্য ব্যবহার করে এমন সিনট্যাক্সের done
পক্ষে এখন অবনতি হয়েছে :Promise
then
$.ajax("parent").
then(function(p) { return $.ajax("child/" + p.id); }).
then(someOtherDeferredFunction).
then(function(c) { alert("success: " + c.name); }).
catch(function(err) { alert("error: " + err.message); });
এটি গ্রহণ করার উপযুক্ত কারণ উন্নত বাক্য গঠন (এবং ত্রুটি পরিচালনার) প্রতিশ্রুতি async
এবং await
প্রসারিত:
try {
var p = await $.ajax("parent");
var x = await $.ajax("child/" + p.id);
var c = await someOtherDeferredFunction(x);
alert("success: " + c.name);
}
catch(err) {
alert("error: " + err.message);
}
success
, jQuery 1.8 এ প্রতিস্থাপন করা হয়েছে done
। তারা একইভাবে কাজ করে, তবে done
বাকি jQuery এর সাথে আরও সুসংগত।
.done
সালে ব্যবহার করব না j jQuery এর প্রথম দিকে (এবং এখন মৃত-শেষ) কী হয়েছিল এবং এটিতে Promise
এখন মোটামুটি ভাষা সমর্থন রয়েছে at নতুন প্রকল্পগুলিতে আমি const response = await fetch(...)
পরিবর্তে ব্যবহার করব ।
.success()
কেবল তখনই ডেকে আনা হয় যদি আপনার ওয়েবসার্ভার 200 ওকে এইচটিটিপি শিরোনাম দিয়ে প্রতিক্রিয়া জানায় - মূলত যখন সবকিছু ঠিক থাকে।
পিছিয়ে দেওয়া সমস্যার সমাধান হয়ে গেলে () এর সাথে সংযুক্ত কলব্যাকগুলি বরখাস্ত করা হবে। ব্যর্থ () এর সাথে সংযুক্ত কলব্যাকগুলি বরখাস্ত করা হবে যখন বিলম্বিত প্রত্যাখাত হয়।
promise.done(doneCallback).fail(failCallback)
.done() has only one callback and it is the success callback
success
অনুরোধটি সফল হওয়ার পরে এবং $.ajax
কলটির অংশ হয়ে থাকে এমন কলব্যাকটি হয়। done
প্রকৃতপক্ষে jqXHR
প্রত্যাবর্তিত অবজেক্টের অংশ $.ajax()
, এবং success
jQuery 1.8 এ প্রতিস্থাপন করে।