मैं निम्नलिखित परीक्षण आवेदन किया है: http://dev.driz.co.uk/ajax/इतिहास एपीआई के साथ वापस और आगे बटन का उपयोग करना
आप लिंक क्लिक कर सकते हैं jQuery AJAX का उपयोग कर अन्य पन्नों में लोड करने के लिए और वहाँ दो प्रकार, globalTabs और localTabs में जो लोड कर रहे हैं विभिन्न पैनलों में सामग्री। नोट: कि प्रत्येक पृष्ठ वास्तव में पूर्ण पृष्ठ है, लेकिन हम केवल उस सामग्री को पकड़ते हैं जिसे हम jQuery खोज विधि का उपयोग करना चाहते हैं।
इसे बढ़ाने के लिए मैं HTML5 इतिहास API (क्रॉस-ब्राउज़र के लिए History.js) का उपयोग कर रहा हूं।
शीर्षक और यूआरएल ठीक बदलते हैं और इतिहास स्टैक को सफलतापूर्वक धकेल दिया जा रहा है और जब मैं बैक और फॉरवर्ड बटन का उपयोग करता हूं तो यूआरएल और शीर्षक वापस लौटता है।
अब जटिल हिस्सा पिछले राज्य की सामग्री में वापस लोड हो रहा है और सही प्रकार को अधिक जटिल लोडिंग उदा। वैश्विक या स्थानीय AJAX। इसे प्राप्त करने के लिए मुझे लगता है कि मुझे दोनों डेटा और प्रकार को पुश स्टेटस में पास करने की आवश्यकता है ताकि इसे पॉपस्टेट के लिए दोबारा उपयोग किया जा सके ...
क्या कोई मुझे सही दिशा में इंगित करने में मदद कर सकता है? मेरे पास काम करने वाले सभी पहले भाग हैं, केवल एजेक्स प्रकार को पुशस्टेट में पास करने का एक मामला है और फिर इसे पॉपस्टेट परिवर्तन के साथ पुन: उपयोग करना है।
नोट::
प्रकार और डेटा पारित करने के लिए मेरी योजना को दिखाने के लिए इस प्रकार यह मैं इसे फिर से लिखने पर सुधार करने के लिए अपरकेस इतिहास है, क्योंकि मैं History.js
var App = {
init: function() {
$(document).ready(function() {
$('.globalTabs li a').live('click', function (e) {
e.preventDefault();
App.globalLoad($(this).attr('href'));
});
$('.localTabs li a').live('click', function (e) {
e.preventDefault();
App.localLoad($(this).attr('href'));
});
});
window.addEventListener('popstate', function(event) {
// Load correct content and call correct ajax request...
});
},
localLoad: function (url) {
$.ajax({
url: url,
success: function (responseHtml) {
$('.localContent').html($(responseHtml).find('#localHtml'));
$data = { $(responseHtml).find('#localHtml'), 'local'};
History.pushState($data, $(responseHtml).filter('title').text(), url);
}
});
},
globalLoad: function (url) {
$.ajax({
url: url,
success: function (responseHtml) {
$('.mainContent').html($(responseHtml).find('#globalHtml'));
$data = { $(responseHtml).find('#globalHtml'), 'global'};
History.pushState($data, $(responseHtml).filter('title').text(), url);
}
});
}
};
App.init();
उपयोग कर रहा हूँ अद्यतन: इस प्रश्न को स्पष्ट करने के लिए, वे दो समस्याएं हैं जिनसे मैं सहायता चाहता हूं।
1.) AJAX अनुरोधों के साथ काम करने वाले बैक और फॉरवर्ड बटन प्राप्त करें ताकि वे सामग्री डेटा में सही डेटा वापस लोड कर सकें।
2.) पुशस्टेट विधि के साथ सामग्री को पास करके सही क्षेत्र में सामग्री लोड करना ताकि यह पता चल सके कि यह वैश्विक div या स्थानीय div अनुरोध है या नहीं।
और फिर मैं उसे कैसे आग लगा सकता हूं? आप पॉपस्टेट का जिक्र नहीं करते? जैसा कि मुझे करने की ज़रूरत है, वह सामग्री को बदलता है और फिर शीर्षक (प्रभावी रूप से एजेक्स कॉल क्या करता है) जब उपयोगकर्ता बैक और फॉरवर्ड बटन का उपयोग करता है, लेकिन AJAX के बजाय यह इतिहास डेटा का उपयोग करेगा क्योंकि इसे वापस दोबारा लोड नहीं किया जाता है जाहिर है – Cameron
मुझे भी त्रुटि मिलती है: 'अनकॉट टाइप एरर: सर्कुलर स्ट्रक्चर को जेएसओएन में कनवर्ट करना' कोई विचार क्या गलत है? http://dev.driz.co.uk/ajax/ – Cameron
ने मेरी प्रतिक्रिया संपादित की, जेसन त्रुटि के बारे में, बस जांचें कि आप साधारण ऑब्जेक्ट पास करते हैं, बिना किसी फ़ंक्शन – cuzzea