এক্সএমএলএইচটিপিআরকোয়েস্ট, jQuery.ajax, jQuery.post, jQuery.get মধ্যে পার্থক্য কি?


121

কোন পদ্ধতির পরিস্থিতি সবচেয়ে ভাল তা আমি কীভাবে জানতে পারি? কার্যকারিতা এবং পারফরম্যান্সের ক্ষেত্রে পার্থক্য জানতে কি কেউ কিছু উদাহরণ সরবরাহ করতে পারেন?


4
পারফরম্যান্স সম্পর্কে (সবেমাত্র জবাব দেওয়া হয়েছে): জেএসপিআফ অনুযায়ী নিয়মিত এক্সএমএলএইচটিএইচপিআরকেস্ট ব্যবহার করা jQuery এর মধ্য দিয়ে যাওয়ার চেয়ে অনেক দ্রুত।
e2-e4

উত্তর:


145
  • XMLHttpRequest কাঁচা ব্রাউজার অবজেক্ট যা jQuery একটি আরও ব্যবহারযোগ্য এবং সরলীকৃত ফর্ম এবং ক্রস ব্রাউজারের ধারাবাহিক কার্যকারিতাতে মোড়ানো।

  • jQuery.ajax jQuery এর একটি সাধারণ অ্যাজাক্স যা কোনও প্রকার এবং সামগ্রী অনুরোধ করতে পারে requ

  • jQuery.getএবং jQuery.postঅন্যদিকে কেবল জিইটি এবং পোষ্ট অনুরোধ জারি করতে পারে। এগুলি কী তা আপনি যদি না জানেন তবে আপনার HTTP প্রোটোকলটি পরীক্ষা করা উচিত এবং কিছুটা শিখতে হবে। অভ্যন্তরীণভাবে এই দুটি ফাংশন ব্যবহার করে jQuery.ajaxতবে তারা নির্দিষ্ট সেটিংস ব্যবহার করে যা আপনাকে নিজেকে আর সেট করতে হবে না ব্যবহারের তুলনায় জিইটি বা পোষ্ট অনুরোধটিকে সহজ করে তুলতে jQuery.ajax। GET এবং পোষ্ট যেকোনোভাবে সর্বাধিক ব্যবহৃত HTTP পদ্ধতি হ'ল (ডিলেট, পুট, হেড বা এমনকি অন্যান্য কদাচিৎ ব্যবহৃত বহিরাগতের তুলনায়)।

সমস্ত jQuery ফাংশন ব্যবহার XMLHttpRequest পটভূমিতে অবজেক্ট তবে অতিরিক্ত কার্যকারিতা সরবরাহ করে যা আপনাকে নিজের করতে হবে না।

ব্যবহার

তাই আপনি যদি jQuery ব্যবহার করেন তবে আমি দৃ strongly়ভাবে আপনাকে কেবল jQuery কার্যকারিতা ব্যবহার করার পরামর্শ দিচ্ছি । XMLHttpRequestপুরোপুরি সম্পর্কে ভুলে যান । উপযুক্ত jQuery অনুরোধ ফাংশন তারতম্য এবং অন্যান্য সমস্ত ক্ষেত্রে ব্যবহার করুন $.ajax()। তাই ভুলবেন না অন্যান্য আছে সাধারণ jQuery এর আয়াক্স এর সাথে সম্পর্কিত ফাংশন থেকে $.get(), $.post()এবং $.ajax()। ঠিক আছে আপনি $.ajax()আপনার সমস্ত অনুরোধের জন্য কেবল ব্যবহার করতে পারেন তবে আপনাকে আরও কিছু কোড লিখতে হবে, কারণ এটির কল করতে আরও কিছু বিকল্প প্রয়োজন options

উপমা

এটি এমন একটি গাড়ি ইঞ্জিন যা আপনি নিজের কাছাকাছি একটি স্টিয়ারিং, ব্রেক ইত্যাদি দিয়ে একটি পুরো গাড়ি তৈরি করতে চান তা কিনতে সক্ষম হবেন ... গাড়ি প্রস্তুতকারকরা একটি বন্ধুত্বপূর্ণ ইন্টারফেস (প্যাডেলস, স্টিয়ারিং হুইল ইত্যাদি) দিয়ে সম্পূর্ণ গাড়ি তৈরি করে সুতরাং আপনাকে এটি নিজেই করতে হবে না।


পারফরম্যান্সের ক্ষেত্রে $ .AAX () ব্যবহার করার কোনও সুবিধা আছে কি?
রডরিগস

1
@ রডরিগস: সত্যই নয়। আপনি যদি ভাবেন $.postএবং $.getএকমাত্র জিনিস ধীরে ধীরে হয় কোড কল করার আগে একটি অল্প পরিমাণ কোড $.ajax। তবে আপনি যদি এক্সএইচআর ব্যবহার করে আপনার নিজের রুটিনগুলি সরাসরি লিখেন তবে জিনিসগুলি কিছুটা অপ্টিমাইজড হতে পারে তবে এটি আরও বগিযুক্ত হতে পারে। আমি আপনাকে jQuery দিকে রাখার পরামর্শ দিচ্ছি। এটি আপনার জীবনকে আরও সহজ করে তুলবে। এবং এ্যাসিঙ্ক কল কোডটি ইস্যু করার চেয়ে অনেক বেশি সময় নিচ্ছে তা বিবেচনা করে আপনি সম্ভবত এই কলগুলির মধ্যে কোনও স্পষ্ট পার্থক্য লক্ষ্য করবেন না।
রবার্ট কোরিটনিক

ধন্যবাদ রবার্ট করিটনিক। সুতরাং আমি $ .পোস্ট এবং get .গেট সহ পেয়ে যাব।
রডরিগস

আপনি চাইলে $.ajaxআপনার কলগুলিকে যেকোন জায়গায় সামঞ্জস্যপূর্ণ করতে যেতে পারেন। যতক্ষণ না আপনি এক্সএইচআর সরাসরি ব্যবহার করেন না আপনি এটি কোনওভাবেই করা ভাল।
রবার্ট কোরিটনিক

1
@ রবার্টকরিটনিক আইই-তে ক্যাচিংয়ের সমস্যাটি সম্পর্কে কী? এক্সএমএলএইচটিপিআরকোয়েস্ট এবং $ .জ্যাক্স () ব্যবহার করে কি এটি একই?
ভরগাভি গুন্ডা

28

তাদের প্রত্যেকে এক্সএমএলএইচটিপিআরকোয়েস্ট ব্যবহার করে। অনুরোধটি করতে ব্রাউজারটি এটি ব্যবহার করে। jQuery হ'ল একটি জাভাস্ক্রিপ্ট লাইব্রেরি এবং XMLHttpRequest তৈরি করতে $ .জ্যাক্স পদ্ধতিটি ব্যবহৃত হয়।

$ .পোস্ট এবং $ .get কেবলমাত্র শর্টহ্যান্ড সংস্করণ $.ajax। তারা বেশ একই কাজ করে তবে একটি এজেএক্স অনুরোধ লিখতে তত দ্রুত করে $.postতোলে - একটি HTTP পোস্ট অনুরোধ করে এবং $.getএইচটিটিপি পেতে অনুরোধ করে makes


আপলোড এবং ডাউনলোডের জন্য প্রতিটি ফাংশনের ডেটা স্থানান্তর সীমা সম্পর্কে কী
রডরিগস

একটি GETঅনুরোধটি ইউআরএল স্ট্রিংয়ের সমস্ত ডেটা প্রেরণ করবে - যা ক্লায়েন্ট / সার্ভারের মাধ্যমে সীমাবদ্ধ করা যেতে পারে ( স্ট্যাকওভারফ্লো / প্রশ্নগুলি / ২6565৯৯৫৫২/২ )। একটি POSTঅনুরোধ শিরোনামে সমস্ত ডেটা প্রেরণ করে, তাই URL আকারের সীমাটি কোনও সমস্যা হওয়া উচিত নয় (যদি না আপনার স্ক্রিপ্টে সত্যিই দীর্ঘ ফাইল এবং ফোল্ডারের নাম না থাকে!)।
জোনাথন বলস্টার

ঠিক আছে. সুতরাং সংক্ষিপ্তভাবে আপনার অর্থ, আরও ডেটা ব্যবহারের পোস্ট পাঠাতে এবং আরও ডেটা ব্যবহারের জন্য পেতে, তাই না?
রডরিগস

@ রডরিগস - হ্যাঁ, বেশ :) সাধারণত আপনি যদি কিছু পড়ার সন্ধান করছেন (যেমন টুইটার থেকে টুইটারের একটি তালিকা পাওয়ার জন্য অনুরোধ) ব্যবহার করুন GET। যদি আপনি কোনও কিছু প্রেরণ করতে চাইছেন (যেমন একটি টুইট পোস্ট করা) তবে ব্যবহার করুন POST,
জনাথন বলস্টার

7

jQuery.get একটি মোড়ক জন্য jQuery.ajax যা এক্সএমএলএইচটিপিআরকুয়েস্টের মোড়ক।

এক্সএমএলএইচটিপিআরকোয়েস্ট এবং আনুন এপিআই (এই সময়ে পরীক্ষামূলক) একমাত্র ডিওএম এ, তাই দ্রুত হওয়া উচিত।

আমি প্রচুর তথ্য দেখেছি যা আর সঠিক নয়, তাই আমি একটি পরীক্ষার পৃষ্ঠা তৈরি করেছি যেখানে যে কোনও সংস্করণ থেকে যে কোনও সংস্করণ যে কোনও সময়ে সেরা is

https://jsperf.com/xhr-vs-jquery-ajax-vs-get-vs-fetch

আমার পরীক্ষাগুলি থেকে আজ দেখা যাচ্ছে যে কেবল jQuery একটি পরিষ্কার বা এমনকি দ্রুত সমাধান নয়, মোবাইল বা ডেস্কটপে আমার জন্য ফলাফলগুলি দেখায় যে আপনি যদি খুব বেশি এজ্যাক্স ব্যবহার করেন তবে jQuery কমপক্ষে XHR2 এর চেয়ে 80% ধীর are মোবাইলে এটি একটি সহজ সাইট লোড করতে অনেক সময় লাগবে।

ব্যবহার নিজেই লিঙ্কে আছে।


2

jQuery.post এবং jQuery.get সাধারণ পৃষ্ঠার ভারসাম্যগুলি অনুকরণ করে, যা বলে, আপনি একটি সাবমিট বাটনে ক্লিক করুন এবং এটি আপনাকে একটি নতুন পৃষ্ঠায় নিয়ে যায় (বা একই পৃষ্ঠা পুনরায় লোড করে)। সার্ভারে ডেটা যেভাবে প্রেরণ করা হয় সেভাবে পোস্ট করুন এবং কিছুটা আলাদা হয়ে যান (এটি সম্পর্কে ভাল নিবন্ধটি এখানে পাওয়া যাবে

jQuery.ajax এবং XMLHttpRequest পৃষ্ঠাটি পোস্টের মতোই বোঝা হয় এবং পেজ পরিবর্তিত হয় না except সার্ভারটি যে তথ্যই দেয় তা স্থানীয়ভাবে জাভাস্ক্রিপ্ট দ্বারা পৃষ্ঠা বিন্যাস সংশোধন সহ যে কোনও উপায়ে ব্যবহার করা যেতে পারে। তারা সাধারণত অ্যাসিক্রোনাস কাজ করতে ব্যবহৃত হয় যখন ব্যবহারকারী এখনও পৃষ্ঠাটি নেভিগেট করতে পারে। এর ভাল উদাহরণ হ'ল একটি পাঠ্য ক্ষেত্রটি সম্পূর্ণ করতে ডাটাবেস মানগুলি থেকে গতিশীল লোড করে স্বয়ংক্রিয়রূপ ক্ষমতা। JQuery.ajax এবং XMLHttpRequest এর মধ্যে মৌলিক পার্থক্য হ'ল jQuery.ajax একই প্রভাব অর্জন করার জন্য XMLHttpRequest ব্যবহার করে তবে একটি সহজ ইন্টারফেস। আপনি যদি jQuery ব্যবহার করেন তবে আমি আপনাকে jQuery.ajax এর সাথে লেগে থাকতে উত্সাহিত করব।


এক্সএমএলএইচটিটিপিআরকুয়েস্ট অবজেক্ট এক্সএমএলএইচটিপি.ওপেন তৈরি, প্রেরণ () এবং প্রতিক্রিয়া পাঠ্যকরণের উপরে jquery ব্যবহার করার সুবিধা কী।
রডরিগেস

এক্সএমএলএইচটিপিআরকোয়েস্ট অবজেক্টটি একটি জিনিসের জন্য আপনার বর্তমান ব্রাউজার অনুযায়ী আলাদাভাবে ইনস্ট্যান্ট করা হয়। এটি আপনাকে XMLHttpRequest ব্যবহার করে একটি প্রাথমিক ইন্টারফেস সরবরাহ করতে জাভাস্ক্রিপ্ট রক্ষণাবেক্ষণের কিছুটা কাছাকাছি l আপনার যদি ইতিমধ্যে jQuery থাকে তবে এটি আপনার জন্য এটি করে। আপনি প্রযুক্তিগতভাবে যে কোনওটির মাধ্যমে একই জিনিসটি করতে পারবেন এটি কার্যত সুবিধার বিষয়। উল্লেখ করার দরকার নেই যেহেতু jQuery XMLHttpRequest অবজেক্টটি মোড়ানো, এর অর্থ এটি আপনি এটি সরবরাহ করে যদি আপনি এটির সাথে বিশেষ কিছু করতে চান।
নীল

ঠিক আছে .. আপনার পরামর্শের জন্য নিলকে ধন্যবাদ ... পিএইচপি বা এসপেক্সের সাথে জিকোয়ারি ব্যবহার এবং ডিবাগ করার জন্য ভিজ্যুয়াল স্টুডিওর মতো কোনও আইডিই রয়েছে কি না?
রডরিগস

কোনও আইডিই খুঁজে পাওয়া কঠিন যা আপনাকে জাভাস্ক্রিপ্ট এবং পিএইচপি বা এসপেক্স উভয়ই ডিবাগ করতে দেয় কারণ একটি সার্ভারসাইড এবং অন্যটি ক্লায়েন্টসাইট। এর অর্থ হ'ল দুর্ভাগ্যক্রমে, আপনাকে আলাদাভাবে জাভাস্ক্রিপ্ট ডিবাগ করতে হবে। তবে, আমি দেখতে পেয়েছি যে ফায়ারব্যাগ ( getfirebug.com ) সাধারণভাবে জাভাস্ক্রিপ্ট ডিবাগ করার জন্য দুর্দান্ত। কলব্যাক ফাংশনটিতে একটি ব্রেকপয়েন্ট রাখুন এবং এটি আপনাকে সার্ভার দ্বারা প্রদত্ত সমস্ত কিছু এবং ধাপে ধাপে আপনার জাভাস্ক্রিপ্ট যা কিছু করে তা দেখায়। আশা করি এইটি কাজ করবে.
নিল

1

পুরানো পোস্ট। তবে এখনও উত্তর দিতে চাই, ওয়েব ওয়ার্কার্স (জাভাস্ক্রিপ্ট) এর সাথে কাজ করার সময় আমি একটি পার্থক্যের মুখোমুখি হয়েছি

ওয়েব কর্মীদের কোনও UI- স্তরের অ্যাক্সেস থাকতে পারে না। এর অর্থ আপনি জাভাস্ক্রিপ্ট কোডটিতে যে কোনও ডিওএম উপাদান অ্যাক্সেস করতে পারবেন না যা আপনি ওয়েব কর্মী ব্যবহার করে চালানোর ইচ্ছা করেন window উইন্ডো, ডকুমেন্ট এবং প্যারেন্টের মতো বিষয়গুলি ওয়েব-কর্মী কোডে অ্যাক্সেস করা যায় না।

যেহেতু আমরা জানি যে jQuery লাইব্রেরি এইচটিএমএল ডিওএম-এর সাথে আবদ্ধ, এবং এটি দিয়ে দেওয়া হচ্ছে "কোনও ডোম অ্যাক্সেস নেই" নিয়ম লঙ্ঘন করা। এটি কিছুটা বেদনাদায়ক হতে পারে কারণ ওয়েব কর্মীদের মধ্যে jQuery.ajax, jQuery.post, jQuery.get এর মতো পদ্ধতি ব্যবহার করা যায় না। ভাগ্যক্রমে, আপনি Ajax অনুরোধ করতে XMLHttpRequest অবজেক্টটি ব্যবহার করতে পারেন ।


0

যতক্ষণ না jQuery পদ্ধতিগুলি রয়েছে .postএবং .getকেবল .ajaxঅভ্যন্তরীণভাবে করা যায়, তাদের উদ্দেশ্য হ'ল অপ্রয়োজনীয় বিকল্পগুলির কিছু বিমূর্ত করা .ajaxএবং যথাক্রমে সেই ধরণের অনুরোধের জন্য উপযুক্ত কিছু ডিফল্ট সরবরাহ করা।

আমি সন্দেহ করি যে 3 এর কারও মধ্যে পারফরম্যান্সে অনেক পার্থক্য রয়েছে।

.ajaxনিজেই পদ্ধতি একটি XMLHttpRequest- এর, এটা ব্যাপকভাবে jQuery এর বাকি অনুযায়ী অপ্টিমাইজ করা করব, কিন্তু যেন আপনি পুরো মিথষ্ক্রিয়া নিজেকে উপযোগী এটি সম্ভবত দক্ষ হিসাবে হবে না করেন .. কিন্তু যে কোড প্রচুর বা লেখার পার্থক্য লেখা jQuery.ajax


jQuery.ajax কাস্টমাইজ করার কোনও সুবিধা আছে
রডরিগস

আমি ধরে নিলাম যে আপনি এটি শর্টহ্যান্ড পদ্ধতিগুলি ব্যবহার করে বোঝাতে চেয়েছেন, আমার অভিজ্ঞতায় আমি দেখতে পেলাম যে শর্টহ্যান্ডগুলি কার্যকর হয় যদি বেশিরভাগ ডিফল্টগুলি আপনি চান যা আপনি চান তবে কীভাবে আপনার প্রয়োজনীয় ডেটা পাবেন তা সম্পর্কে খুব সুনির্দিষ্ট হওয়া দরকার। এজ্যাক্স সাধারণত যেতে হয়।
স্টিভ

ধন্যবাদ স্টিভ পোস্ট ব্যবহার এবং পেতে হবে। আপনি .ajax এর কিছু উদাহরণ দিলে আমি কিছু তুলনা করতে পারি ,.
রডরিগস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.