আমি ক্লায়েন্ট সাইডে (জাভাস্ক্রিপ্ট) জানি আপনি উইন্ডোজ.লোকেশন.হ্যাশ ব্যবহার করতে পারেন তবে সার্ভার সাইড থেকে অ্যাক্সেস পেতে কোনওভাবেই খুঁজে পেলেন না।
আমি ক্লায়েন্ট সাইডে (জাভাস্ক্রিপ্ট) জানি আপনি উইন্ডোজ.লোকেশন.হ্যাশ ব্যবহার করতে পারেন তবে সার্ভার সাইড থেকে অ্যাক্সেস পেতে কোনওভাবেই খুঁজে পেলেন না।
উত্তর:
আমাদের এমন পরিস্থিতি হয়েছিল যেখানে আমাদের এএসপি. নেট পোস্ট ব্যাক জুড়ে ইউআরএল হ্যাশ ধরে রাখা দরকার। ব্রাউজারটি হ্যাশটি সার্ভারে ডিফল্টরূপে না পাঠায়, কেবলমাত্র এটি করার কয়েকটি উপায় জাভাস্ক্রিপ্ট ব্যবহার করা:
ফর্মটি জমা window.location.hash
দিলে , হ্যাশটি ধরে ফেলুন ( ) এবং এটি একটি সার্ভারের পাশের লুকানো ইনপুট ক্ষেত্রে সংরক্ষণ করুন " urlhash
" এর আইডি সহ এটি একটি ডিআইভিতে রাখুন যাতে আমরা এটি পরে খুঁজে পেতে পারি।
সার্ভারে আপনি যদি এটির সাথে কিছু করার দরকার হয় তবে আপনি এই মানটি ব্যবহার করতে পারেন। আপনার প্রয়োজন হলে আপনি এটি পরিবর্তন করতে পারেন।
ক্লায়েন্টের পৃষ্ঠা লোডে , এই লুকানো ক্ষেত্রের মানটি পরীক্ষা করুন। আপনি এটি ডিআইভি দ্বারা এটি সন্ধান করতে চাইবেন যাতে এটি এতে অন্তর্ভুক্ত থাকে কারণ স্বয়ংক্রিয়ভাবে উত্পন্ন আইডিটি পরিচিত হবে না। হ্যাঁ, আপনি এখানে .ClientID এর সাথে কিছু কৌতুকপূর্ণ কাজ করতে পারেন তবে আমরা কেবলমাত্র মোড়ক ডিআইভি ব্যবহার করা সহজ বলে মনে করেছি কারণ এটি এই সমস্ত জাভাস্ক্রিপ্টকে একটি বাহ্যিক ফাইলে থাকতে দেয় এবং জেনেরিক ফ্যাশনে ব্যবহার করতে পারে।
যদি লুকানো ইনপুট ক্ষেত্রটির কোনও বৈধ মান থাকে তবে এটি URL হ্যাশ ( window.location.hash again
) হিসাবে সেট করুন এবং / অথবা অন্যান্য ক্রিয়া করুন।
ক্ষেত্র ইত্যাদি নির্বাচনকে সহজ করার জন্য আমরা jQuery ব্যবহার করেছি ইত্যাদি ... সব মিলিয়ে এটি শেষ হয় কয়েকটি জিকুয়েরি কল, একটি মান বাঁচাতে এবং অন্যটি পুনরুদ্ধার করার জন্য।
জমা দেওয়ার আগে:
$("form").submit(function() {
$("input", "#urlhash").val(window.location.hash);
});
পৃষ্ঠা লোডে:
var hashVal = $("input", "#urlhash").val();
if (IsHashValid(hashVal)) {
window.location.hash = hashVal;
}
IsHashValid()
" undefined
" বা অন্যান্য জিনিস আপনি পরিচালনা করতে চান না তা পরীক্ষা করতে পারে।
$(document).ready()
অবশ্যই, আপনি অবশ্যই যথাযথভাবে ব্যবহার করেছেন তা নিশ্চিত করুন ।
আরএফসি 2396 বিভাগ 4.1:
যখন কোনও ইউআরআই রেফারেন্স চিহ্নিত সংস্থার উপর পুনরুদ্ধার ক্রিয়া সঞ্চালনের জন্য ব্যবহৃত হয়, তখন ক্রশচ্যাচ ("#") অক্ষর দ্বারা ইউআরআই থেকে পৃথক optionচ্ছিক খণ্ড সনাক্তকারী, অতিরিক্ত রেফারেন্স তথ্য ধারণ করে ব্যবহারকারীর এজেন্ট দ্বারা পুনরুদ্ধারের পরে ব্যাখ্যা করার জন্য কর্ম সফলভাবে সম্পন্ন হয়েছে । যেমনটি, এটি কোনও ইউআরআই-র অংশ নয়, তবে প্রায়শই এটি ইউআরআইয়ের সাথে একত্রে ব্যবহৃত হয়।
(সামনে জোর দাও)
এটি কারণ ব্রাউজারটি সেই অংশটি সার্ভারে প্রেরণ করে না, দুঃখিত।
আপনি সম্ভবত কোনও জিইটি / পোস্টে টুকরোটি দেখার চেষ্টা করছেন না এবং আপনার সার্ভার-সাইড কোডের মধ্যে থাকা কোনও ইউআরআই অবজেক্টের সেই অংশটি কীভাবে অ্যাক্সেস করবেন তা জানতে চান, তবে এটি ইউরি.ফ্রেগমেন্টের আওতায় রয়েছে ( এমএসডিএন ডক্স )।
জিইটি অনুরোধগুলির সম্ভাব্য সমাধান:
নতুন লিঙ্ক ফর্ম্যাট: http://example.com/yourDirectory?hash=video01
নিয়ন্ত্রণকারীর শীর্ষে এই ফাংশনটি কল করুন বা http://example.com/yourDirectory/index.php
:
function redirect()
{
if (!empty($_GET['hash'])) {
/** Sanitize & Validate $_GET['hash']
If valid return string
If invalid: return empty or false
******************************************************/
$validHash = sanitizeAndValidateHashFunction($_GET['hash']);
if (!empty($validHash)) {
$url = './#' . $validHash;
} else {
$url = '/your404page.php';
}
header("Location: $url");
}
}