আমাকে কি কেউ সাহায্য করতে পারবেন?
আমি 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পক্ষে এখন অবনতি হয়েছে :Promisethen
$.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(), এবং successjQuery 1.8 এ প্রতিস্থাপন করে।