سؤال

لدي أسباب مشروعة للقيام بما أحاول شرحه. لدي موقع موجود يقول abc.com الذي يحتوي على صفحات منتظمة وما إلى ذلك. كل شيء مكتوب في PHP. الآن أود اجاكس الموقع أي عندما ينقر المستخدم على رابط، يجب أن يحضر الرابط باستخدام AJAX واستبدل محتويات الصفحة. هذا هو الجزء السهل ويمكنني تحقيقه باستخدام وظيفة JQuery Get.

الآن المشكلة تأتي عندما يوضح المستخدم الصفحة. يمكنني استخدام علامات التجزئة لتحديد ما إذا كان المستخدم في صفحة أخرى، ولكن بدلا من استخدام JavaScript لجلب الصفحة الجديدة مرة أخرى، هل من الممكن جلبها مباشرة باستخدام PHP عند استدعاء الصفحة.

هل يمكن أن تعطيني مخططا حول كيفية تحقيق ما ورد أعلاه. هذه الوظيفة مشابهة لما يحتوي على Facebook.

شكرا لوقتك.

هل كانت مفيدة؟

المحلول

إنها ببساطة مجرد عملية (1) تحليل علامة التجزئة، و (2) تحميل المحتوى عبر Ajax كما تفعل عادة.

إذا قمت بتحميل المزيد من المحتوى عندما ينقر المستخدم على الصفحة، فتأكد من تعديل علامة التجزئة بشكل صحيح دائما لتعكس ما في الصفحة.

هنا مثال سريع للعب حولها. انقر على اسم ولاحظ علامة التجزئة. تبدو جافا سكريبت ذات الصلة مثل هذا:

// Go straight to content if it's in the hash.
$(document).ready(function(){
   load_story_from_hash();
});

// Call this function whenever user clicks on a hash link
function set_hash(hash){
   window.location.hash = hash;
   load_story_from_hash()
}

// Actually load content based on the hash in the URL
function load_story_from_hash(){

   var hash = window.location.hash;
   hash = hash.replace(/^#/, '');

   if (hash) {

      $('#post_container').load(hash+'.html', {}, function(){
         $.scrollTo('#post_container', 1000);
      });

   }

}

نصائح أخرى

الجواب لا، لا يمكنك الحصول على قيمة جانب خادم رقم URL Hash. يرى كيفية الحصول على رابط Hash (#) من جانب الخادم.

سيكون عليك الحصول على جانب عميل قيمة التجزئة وإجراء طلب إضافي.

تاريخ JQuery هو خياري المفضل. ويمكن العثور عليها هنا: http://www.balupton.com/projects/jquery-history/ قم بتوفير دعم متصفح متقاطع، ملزمة للحجائر، تجزئة الحمولة الزائدة، كل ما تبقى.

يوجد أيضا ملحق Ajax وهو يسمى JQuery Ajaxy، مما يسمح له بترقية صفحة الويب الخاصة بك بسهولة في تطبيق AJAX مناسب دون الحاجة إلى تغييرات جانبية الخادم ووضوح سيو و JS-Disabled: http://www.balupton.com/projects/jquery-ajaxy/

هذا هو الحل الذي تم اختياره بواسطة هذه المواقع http://wbhomes.com.au/ و http://www.balupton.com.

بشكل عام، كلاهما موثق جيدا ودعمه وميزة غنية. لقد فازوا أيضا بمسألة فضيلة هنا كيفية إظهار طلبات AJAX في URL؟

حسنا، يمكنك استخدام واحدة من هذه الأدوات أو لفة خاصة بك. يستخدم window.location.hash جنبا إلى جنب مع الحيل الأخرى.

كتبت مقالة مؤخرا حول هذه المشكلة الدقيقة. المقالة هي نمط تعليمي. باستخدام حدث تغيير التجزئة، أظهر كيفية إضافة معلمات إلى عنوان URL، والتي يمكن أن تؤدي إلى طلبات AJAX مع عدد لا حصر له من المعلمات، وبالتالي تعمل بطريقة قابلة للطي للغاية.

يمكنك أن تجد المزيد عن ذلك هنا في http://andresgallo.com/2012/06/08/AJAXISING-TH-WEB-The-Easy-Way /

الجزء الأول يغطي كيفية الاستجابة لروابط التجزئة، بينما يغطي الجزء الثاني كيفية إرسال البيانات في عنوان URL الخاص ب Hash إلى طلب AJAX، وبالتالي يسمح لك بصلاحية أي شيء تريده إلى حد كبير من علامات التجزئة في عنوان URL الخاص بك.

أفضل طريقة للقيام بذلك هي أن يكون لديك index.php واحد يقوم بتحميل جميع الصفحات الأخرى بناء على أجزاء URL بعدها. على سبيل المثال:

http://www.example.com/index.php/reports/employees/hoursworked.

في هذه الحالة، سيتم تشغيل Index.PhP، يمكن أن نرى ما يجري مطلوب هو أن ساعات العمل التي تعمل، وتحميل هذا المحتوى. المشكلة هي، إذا قام Index.php، ثم قم بتحميل جميع المحتويات الأخرى بعد ذلك باستخدام AJAX، فلن يتغير عنوان URL في المتصفح أبدا.

طريقة واحدة حول هذه المشكلة ستكون وضع الرابط "رابط لهذه الصفحة" في كل صفحة تحتوي على شكل عنوان URL للمستخدمين للإشارة المرجعية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top