বর্তমান রাজ্যের সাথে মেলে এমন AJAX অ্যাপে ঠিকানা বার URL সংশোধন করুন

আমি একটি AJAX অ্যাপ্লিকেশন লেখার করছি, কিন্তু হিসাবে ব্যবহারকারী অ্যাপ্লিকেশন মাধ্যমে স্থানান্তর, আমি আপডেট ঠিকানা বারে URL পৃষ্ঠা পুনঃলোড অভাব সত্ত্বেও চাই। মূলত, আমি তাদের চাই যে কোনও স্থানে বুকমার্ক করতে এবং এর ফলে বর্তমান অবস্থা ফিরে আসে।

কিভাবে AJAX অ্যাপ্লিকেশনগুলির মধ্যে বিশৃঙ্খলতা বজায় রাখছে মানুষ?

0
আমি উত্তর প্রেরণ করেছি pushstate দৃষ্টিভঙ্গি বিশিষ্ট হিসাবে।
যোগ লেখক jasonjwwilliams, উৎস
<�কোড> window.history.pushState (নাল, 'হাই', 'page1? আইডি = 32') এ
যোগ লেখক Omu, উৎস
এটি আপনার অ্যাপ্লিকেশনগুলির রাজত্বের জন্য ব্যবহার করা হয়, কিন্তু "রেসপটন" এর সাথে কিছুই করার নেই।
যোগ লেখক Mohamed, উৎস
গৃহীত উত্তর 5 বছর আগে লিখিত হয়েছিল এবং সেই সময়ে, আমরা window.history.pushState পেয়েছিলাম, ঠিক যেমন @ ওমু বলেন। location.hash অনেক সমস্যা আনা এবং এটা এড়াতে ভাল।
যোগ লেখক peteroak, উৎস

6 উত্তর

এটি করার উপায়টি হল location.hash এএএএএএএএএএএএএএক্স এর আপডেটের ফলে একটি রাষ্ট্রীয় পরিবর্তনের ফলে আপনি একটি বিচক্ষণ URL রাখতে চান। উদাহরণস্বরূপ, যদি আপনার পৃষ্ঠার url হয়:

http://example.com/

যদি একটি ক্লায়েন্ট সাইড ফাংশন এই কোডটি কার্যকর করে:

// AJAX code to display the "foo" state goes here.

location.hash = 'foo';

তারপর, ব্রাউজারে প্রদর্শিত URLটি এতে আপডেট হবে:

http://example.com/#foo

এই ব্যবহারকারীদের পৃষ্ঠার "foo" অবস্থা বুকমার্ক করার অনুমতি দেয়, এবং ব্রাউজারের ইতিহাসটি রাষ্ট্রগুলির মধ্যে নেভিগেট করতে ব্যবহার করে।

এই পদ্ধতির মাধ্যমে, আপনি তখন ক্লায়েন্টের দিকে ইউটিউবের হ্যাশ অংশকে জাভাস্ক্রিপ্ট ব্যবহার করে যথাযথ প্রাথমিক অবস্থা তৈরি এবং প্রদর্শন করতে হবে, যেহেতু টুকরা চিহ্নিতকারী (# এর পরে অংশ) পাঠানো হয় না সার্ভার।

Ben Alman's hashchange plugin makes the latter a breeze if you're using jQuery.

0
যোগ
@ বুইমাসোডা সম্পাদনার জন্য ধন্যবাদ; আমি যে অংশ লিখেছিলাম যখন আমি চিন্তা ছিল কি নিশ্চিত না।
যোগ লেখক Dave Ward, উৎস
@ নীল: আমি ইচ্ছাকৃতভাবে সময় / প্রশ্ন / পৃষ্ঠার গঠন ব্যবহার করেছি, কিন্তু আমি সম্পূর্ণরূপে নিশ্চিত নই কেন কেন। আপনি সম্ভবত সঠিক যে এটি পালন সহজ আরও স্পষ্ট। আমি সেই অনুযায়ী উত্তর আপডেট করেছি।
যোগ লেখক Dave Ward, উৎস
@ পাসনাল আপনি ব্রাউজারে শুধুমাত্র HTML5 এর pushState সমর্থন করতে পারেন। এখানে যে ভাল তথ্য: diveintohtml5.info/history.html
যোগ লেখক Dave Ward, উৎস
মনে হচ্ছে তুমি ঠিক বলেছ। এটা শুধুমাত্র পদ্ধতি এটি আপনার পরামর্শের একটি ভাল বিস্তারিত ব্যাখ্যা মত মনে হয়: << a href = "http://ajaxpatterns.org/Unique_URLs>" rel = "nofollow noreferrer"> ajaxpatterns.org/Unique_URLs> ;
যোগ লেখক jasonjwwilliams, উৎস
বাহ, এই উত্তর খুব সহায়ক ছিল। ইউআরএল উদাহরণ একটি বিট বিভ্রান্তিকর যদিও, তাই স্বয়ংক্রিয়ভাবে শিরোনাম সঙ্গে লিঙ্ক প্রতিস্থাপন হতে পারে। যেমন example.com এবং example.com/#foo এর মতো কিছুকে পরিবর্তিত করার জন্য, যাতে আমরা পুরো URLটি plaintext এ দেখতে পারি।
যোগ লেখক Neil, উৎস
ব্রাউজার সামঞ্জস্যের জন্য ভিত্তিগুলি জুড়ে আমি ইতিহাসের একটি বড় ফ্যান হয়েছি। /history.js
যোগ লেখক jocull, উৎস
@ দ্যা ডেভ, আমি কি #ফু হ্যাশ-চ্যার ছাড়া যা সম্ভব?
যোগ লেখক Pascal, উৎস

যদি OP বা অন্যেরা এখনও একটি উপায় খুঁজছে ব্রাউজার ইতিহাস সংশোধন করতে রাষ্ট্র সক্রিয় করতে, pushState এবং প্রতিস্থাপন স্টেইট ব্যবহার করে, যেমন IESUS দ্বারা প্রস্তাবিত, এটি 'অধিকার' এখন এটি করার উপায়। এটি হ'ল মূল হোস্ট। এটি হ'ল শুধু প্রকৃত হ্যাশ নয় বরং প্রকৃত ইউআরএল তৈরি করে। হ্যাশ ব্যবহার করে ব্রাউজারের ইতিহাস যদি সংরক্ষণ করা হয়, এবং তারপর জাভাস্ক্রিপ্ট অক্ষমের সাথে পুনর্বিবেচনা করে তবে অ্যাপটি কাজ করবে না, যেহেতু হ্যাশ সার্ভারে পাঠানো হয় না। যাইহোক, যদি pushState ব্যবহার করা হয়, তাহলে সমগ্র রুট সার্ভারে পাঠানো হবে, যা আপনি রাস্তায় যথাযথভাবে উত্তর দেওয়ার জন্য তৈরি করতে পারেন। আমি একটি উদাহরণ দেখেছি যেখানে একই মূখী টেমপ্লেটগুলি সার্ভার ও ক্লায়েন্ট উভয় পক্ষের জন্য ব্যবহৃত হয়েছিল। ক্লায়েন্ট জাভাস্ক্রিপ্ট সক্ষম থাকলে, তিনি সার্ভারে roundtrip এড়ানো দ্বারা snappy প্রতিক্রিয়া পেতে হবে, কিন্তু অ্যাপ্লিকেশন জাভাস্ক্রিপ্ট ছাড়া পুরোপুরি জরিমানা কাজ করবে। এইভাবে, অ্যাপটি জাভাস্ক্রিপ্টের অনুপস্থিতিতে চরমভাবে নিন্দা করতে পারে।

এছাড়াও, আমি বিশ্বাস করি এখানে history.js এর মত একটি নাম সহ কিছু কাঠামো আছে ব্রাউজারগুলি যে HTML5 সমর্থন করে, এটিটি pushState ব্যবহার করে, কিন্তু যদি ব্রাউজারটি এটি সমর্থন করে না, তবে এটি স্বয়ংক্রিয়ভাবে হ্যাশ ব্যবহার করে ফিরে আসে।

0
যোগ

এই কেভিন বলেন কি অনুরূপ। আপনি আপনার ক্লায়েন্টকে কিছু জাভাস্ক্রিপ্ট অবজেক্ট হিসাবে ধরে রাখতে পারেন, এবং যখন আপনি রাষ্ট্রটি সংরক্ষণ করতে চান, তখন আপনি বস্তুর সিরিয়ালাইজ করুন (JSON এবং base64 এনকোডিং ব্যবহার করে)। আপনি তারপর এই স্ট্রিং এ href এর টুকরা সেট করতে পারেন।

var encodedState = base64(json(state));
var newLocation = oldLocationWithoutFragment + "#" + encodedState;

document.location = newLocation; // adds new entry in browser history
document.location.replace(newLocation); // replaces current entry in browser history

প্রথম উপায় নতুন রাষ্ট্রকে একটি নতুন স্থান হিসাবে বিবেচনা করবে (যাতে ফিরে বোতাম পূর্ববর্তী অবস্থানে নিয়ে যাবে)। আধুনিক না।

0
যোগ
document.location.replace করছেন সেই ব্রাউজারটিকে সেই url- এ পুনঃনির্দেশিত করবে (এটি শুধুমাত্র ক্রোম কনসোলের মধ্যেই চেষ্টা করে)
যোগ লেখক Omu, উৎস
পৃষ্ঠা রিফ্রেশ ছাড়া বুকমার্ক ইতিহাসে একটি এন্ট্রি যোগ করার একটি উপায় আছে? অবস্থান স্থাপন (আপনার প্রথম উদাহরণ হিসাবে) একটি রিফ্রেশ হবে, তাই না?
যোগ লেখক Drew Noakes, উৎস

যদি ইউজার বারে ক্লিক করেন তবে জাভাস্ক্রিপ্ট আপনাকে পৃষ্ঠাটির বাইরে বলে। যদি আপনি ইউআরএল বারটি পরিবর্তন করেন এবং এটিকে '#' চিহ্নের সাথে 'এন্টার' চাপুন তাহলে আপনি পৃষ্ঠাটি আবার মাউস কার্সার দিয়ে ক্লিক করে পৃষ্ঠাটিতে যান, তারপর জাভাস্ক্রিপ্ট থেকে একটি কীবোর্ড ইভেন্ট কমান্ড (নথি। এটি পুনর্নির্দেশনা জন্য জাভাস্ক্রিপ্ট প্রবেশ এবং সক্রিয় কিনা চেক করতে সক্ষম হতে। আপনি পৃষ্ঠাটি উইন্ডোতে দেখতে পারেন কিনা তা পরীক্ষা করতে পারেন। ফোকাস এবং চেক করুন যে সেটি উইন্ডোর সাথে আছে কিনা।

হ্যা, এটা সম্ভব।

;)

0
যোগ
ইউজার বারের ইউআরএল বারটি # সিম্বলের সাথে সম্পাদনা করার সময় এই পৃষ্ঠাটিকে পরিবর্তন করার জন্য আমি মার্জিত দেখেছি।
যোগ লেখক Marcelo, উৎস

Book.cakephp.org এর মতো সাইটগুলি দেখুন এই সাইটটি হ্যাশ ব্যবহার করে এবং AJAX ব্যবহার করে URL পরিবর্তন করে। আমি এটা ঠিক কিভাবে এটা নিশ্চিত না কিন্তু আমি এটা চিন্তা করার চেষ্টা করছি। যদি কেউ জানে, আমাকে জানাবেন।

এছাড়াও github.com একটি নির্দিষ্ট প্রকল্পের মধ্যে একটি নেভিগেট যখন খুঁজছেন।

0
যোগ
আমি লক্ষ্য করেছি যে সপ্তাহে বা আগে গিটহুব এর সাথে। পৃথিবীতে তারা কিভাবে তা করে? ফিরে যান এবং চেক করতে হবে।
যোগ লেখক Drew Noakes, উৎস
এই জন্য ধন্যবাদ, এটা ঠিক আমি কি খুঁজছেন ছিল। আমি বিস্ময়ের উদ্রেক ছিল কিভাবে github এটা কি। প্রথমে আমি ভাবলাম এটি পুনরায় লোড করা উচিত কিন্তু শুধুমাত্র AJAX অনুরোধ ছিল অপেরাতে, এটি পৃষ্ঠাটি পুনরায় লোড করেছে।
যোগ লেখক kamranicus, উৎস
বিভিন্ন গ্রুপের পৃষ্ঠাগুলির মাধ্যমে নেভিগেট করার সময় একই পদ্ধতি Fb দ্বারা ব্যবহৃত হয়। আপনার একটি বাম এনওয়াই কলাম আছে যার মধ্যে বিভিন্ন গ্রুপ উল্লেখ করা হয়েছে। যখন আপনি একটি নির্দিষ্ট গোষ্ঠীর নামের উপর ক্লিক করেন তখন url পরিবর্তন করে এবং প্রধান সামগ্রী প্যানেলে শুধুমাত্র বিষয়বস্তু url (কোন হ্যাশ) এর সাথে পরিবর্তন করে। সুতরাং যখন ব্যবহারকারী পৃষ্ঠাটি পুনরায় লোড করে তখন তারা হোম পৃষ্ঠাতে কিন্তু গোষ্ঠীগুলির পৃষ্ঠায় পুনঃনির্দেশিত হয় না।
যোগ লেখক Madeyedexter, উৎস
তারা জাভাস্ক্রিপ্ট ফাংশন pushState() ব্যবহার করে বলে মনে হচ্ছে। এটি আপনার ব্রাউজারের ইতিহাসে জুড়েছে। এর ভিতরে তাকাও; এটি বেশ আকর্ষণীয় এবং শীতল।
যোগ লেখক daniel.wright, উৎস

এটা অসম্ভাব্য যে লেখক আবার Ajax ব্যবহার করার সময় তার ভিজিটর পুনরায় লোড বা পুনঃনির্দেশ করতে চায়। কিন্তু HTML5 এর <�কোড> পুষ্টাটি </কোড> / প্রতিস্থাপন স্টাট </কোড> ব্যবহার না কেন?

You'll be able to modify the addressbar as much as you like. Get natural looking urls, with AJAX.

Check out the code on my latest project: http://iesus.se/

0
যোগ