मैं jQuery के साथ एक पृष्ठ को कैसे ताज़ा कर सकता हूं?
मैं jQuery के साथ एक पृष्ठ को कैसे ताज़ा कर सकता हूं?
जवाबों:
उपयोग करें location.reload():
$('#something').click(function() {
location.reload();
});
reload()समारोह एक वैकल्पिक पैरामीटर के लिए सेट किया जा सकता है कि लेता है trueसर्वर के बजाय कैश से एक बार पुनः लोड करने के लिए मजबूर करने। पैरामीटर चूक करता है false, इसलिए डिफ़ॉल्ट रूप से पृष्ठ ब्राउज़र के कैश से पुनः लोड हो सकता है।
window.location.href=window.location.href;और location.href=location.href;काम किया।
window.location.reload(true);हार्ड रिफ्रेश करेंगे, अन्यथा डिफ़ॉल्ट रूप से यह गलत है
रहे हैं कई जावास्क्रिप्ट के साथ एक पृष्ठ को ताज़ा करने के लिए असीमित तरीके:
location.reload()history.go(0)location.href = location.hreflocation.href = location.pathnamelocation.replace(location.pathname)location.reload(false)
यदि हमें वेब-सर्वर से दस्तावेज़ को फिर से खींचने की आवश्यकता है (जैसे कि दस्तावेज़ सामग्री गतिशील रूप से बदल जाती है) तो हम तर्क को पास करेंगे
true।
आप सूची को रचनात्मक बनाए रख सकते हैं:
window.location = window.locationwindow.self.window.self.window.window.location = window.locationvar methods = [
"location.reload()",
"history.go(0)",
"location.href = location.href",
"location.href = location.pathname",
"location.replace(location.pathname)",
"location.reload(false)"
];
var $body = $("body");
for (var i = 0; i < methods.length; ++i) {
(function(cMethod) {
$body.append($("<button>", {
text: cMethod
}).on("click", function() {
eval(cMethod); // don't blame me for using eval
}));
})(methods[i]);
}
button {
background: #2ecc71;
border: 0;
color: white;
font-weight: bold;
font-family: "Monaco", monospace;
padding: 10px;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.5s ease;
margin: 2px;
}
button:hover {
background: #27ae60;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
(reload()/(false))धीमे हैं। हममम। दिलचस्प। :) और 1 और 6 वही हैं जो reload()डिफ़ॉल्ट पैरामीटर है false।
location.href = location.hrefवह है जो मैं आमतौर पर उपयोग करता हूं, लेकिन दूसरों के लिए धन्यवाद। बहुत उपयोगी! +1
बहुत सारे तरीके काम करेंगे, मुझे लगता है:
window.location.reload();history.go(0);window.location.href=window.location.href;window.location.href=window.location.href; करेगा अगर आपके URL के अंत में एक # / हैशबैंग है :example.com/something#blah
location.reload()और history.go(0)है: कोई नहीं है। W3.org/TR/html5/browsers.html#dom-history-go पर HTML 5 कल्पना का प्रासंगिक खंड स्पष्ट रूप से निर्धारित करता है कि वे समतुल्य हैं: "जब go(delta)विधि को लागू किया जाता है, यदि विधि के लिए तर्क छोड़ दिया गया था या है मान शून्य, उपयोगकर्ता एजेंट को कार्य करना चाहिए जैसे कि location.reload()विधि को इसके बजाय बुलाया गया था। "
JQuery के साथ एक पृष्ठ पुनः लोड करने के लिए, करें:
$.ajax({
url: "",
context: document.body,
success: function(s,x){
$(this).html(s);
}
});
यहाँ जिस दृष्टिकोण का मैंने उपयोग किया, वह अजाक्स jQuery था। मैंने इसे क्रोम 13. पर परीक्षण किया । फिर मैंने कोड को हैंडलर में रखा जो कि पुनः लोड हो जाएगा। यूआरएल है ""जिसका अर्थ है, यह पेज ।
contextपैरामीटर को गलत समझ रहे हैं $.ajaxऔर उम्मीद कर रहे हैं कि यह किसी तरह का जादू कर दे। यह सब करता है कॉलबैक फ़ंक्शन का मान सेटthis करता है । अजाक्स की एक यूआरएल के लिए "", यूआरएल आप पर वर्तमान में कर रहे हैं मारा जिससे आमतौर पर (सहित पूरा एचटीएमएल लोड हो रहा होगा <html>और <head>और <body>सामान आप नहीं चाहते बाहर इस उत्तर फिल्टर में), और कुछ भी नहीं है।
यदि वर्तमान पृष्ठ POST अनुरोध द्वारा लोड किया गया था, तो आप उपयोग करना चाह सकते हैं
window.location = window.location.pathname;
के बजाय
window.location.reload();
क्योंकि window.location.reload()पुष्टि के लिए संकेत देगा यदि किसी पृष्ठ पर जिसे पोस्ट पोस्ट अनुरोध द्वारा लोड किया गया था।
window.location = window.locationहालांकि, @mrills भी अपूर्ण है; यदि वर्तमान URL में कोई खंडित (हैशबैंग) है तो यह कुछ नहीं करता है।
सवाल यह होना चाहिए,
जावास्क्रिप्ट के साथ एक पृष्ठ को ताज़ा कैसे करें
window.location.href = window.location.href; //This is a possibility
window.location.reload(); //Another possiblity
history.go(0); //And another
आप चुनाव के लिए खराब हो गए हैं।
आप उपयोग करना चाह सकते हैं
location.reload(forceGet)
forceGet एक बूलियन और वैकल्पिक है।
डिफ़ॉल्ट गलत है जो पृष्ठ को कैश से पुनः लोड करता है।
यदि आप कैश से छुटकारा पाने के लिए सर्वर से पृष्ठ प्राप्त करने के लिए ब्राउज़र को बाध्य करना चाहते हैं तो इस पैरामीटर को सही पर सेट करें।
या केवल
location.reload()
यदि आप कैशिंग के साथ त्वरित और आसान चाहते हैं।
कैश-संबंधित व्यवहार के साथ तीन दृष्टिकोण:
location.reload(true)उन ब्राउज़रों forcedReloadमें location.reload(), जो पैरामीटर को लागू करते हैं , पृष्ठ और उसके सभी संसाधनों (स्क्रिप्ट, स्टाइलशीट, चित्र, आदि) की एक नई प्रतिलिपि प्राप्त करके पुनः लोड करते हैं। कैश से किसी भी संसाधन की सेवा नहीं करेगा - अनुरोध में कोई if-modified-sinceया if-none-matchहेडर भेजे बिना सर्वर से नई प्रतियां प्राप्त करता है ।
उन ब्राउज़र में "हार्ड रीलोड" कर रहे उपयोगकर्ता के समतुल्य जहां यह संभव है।
ध्यान दें कि गुजर trueकरने के लिए location.reload()फ़ायरफ़ॉक्स (देखें में समर्थित है MDN ) और इंटरनेट एक्सप्लोरर (देखें MSDN ), लेकिन सार्वभौमिक समर्थित नहीं है और का हिस्सा नहीं है डब्ल्यू 3 एचटीएमएल 5 कल्पना , और न ही डब्ल्यू 3 मसौदा एचटीएमएल 5.1 कल्पना , और न ही WHATWG एचटीएमएल लिविंग स्टैंडर्ड ।
Google Chrome की तरह असमर्थित ब्राउज़र में, location.reload(true) वैसा ही व्यवहार करता है location.reload()।
location.reload() या location.reload(false)पृष्ठ को पुन: लोड करता है, पृष्ठ HTML की एक ताज़ा, गैर-कैश्ड प्रतिलिपि प्राप्त करता है, और RFC 7234 करता है किसी भी संसाधन (जैसे स्क्रिप्ट) के लिए पुनर्मूल्यांकन अनुरोध करना, जो ब्राउज़र ने कैश किया है, भले ही वे ताज़ा हों हो हैं RFC 7234 ब्राउज़र की सेवा करने की अनुमति देता है उन्हें बिना मान्यता के।
वास्तव में ब्राउज़र को प्रदर्शन करते समय अपने कैश का उपयोग कैसे करना चाहिए location.reload() कॉल निर्दिष्ट नहीं किया जाता है या जहां तक मैं बता सकता हूं दस्तावेज नहीं है; मैंने प्रयोग द्वारा उपरोक्त व्यवहार का निर्धारण किया।
यह केवल उनके ब्राउज़र में "ताज़ा" बटन दबाने वाले उपयोगकर्ता के बराबर है।
location = location (या असीम रूप से कई अन्य संभावित तकनीकें जिनमें असाइन करना शामिल है location इसके गुणों को या )केवल तभी काम करता है जब पृष्ठ के URL में कोई खंडित / हैशबैंग न हो!
पृष्ठ को पुनः लोड किए बिना किसी भी ताज़ा या फिर से अमान्य करने के लिए पुनः लोड करेंकैश से संसाधनों को फिर से करें। यदि पृष्ठ का HTML स्वयं ताज़ा है, तो यह पृष्ठ को किसी भी HTTP अनुरोध को पूरा किए बिना पुनः लोड कर देगा।
यह एक नए टैब में पृष्ठ खोलने वाले उपयोगकर्ता के लिए (एक कैशिंग परिप्रेक्ष्य से) बराबर है।
हालाँकि, यदि पृष्ठ के URL में हैश है, तो इसका कोई प्रभाव नहीं होगा।
फिर से, यहाँ कैशिंग व्यवहार अनिर्दिष्ट है जहाँ तक मुझे पता है; मैंने परीक्षण करके इसे निर्धारित किया।
तो, सारांश में, आप उपयोग करना चाहते हैं:
location = locationकैश के अधिकतम उपयोग के लिए, जब तक कि पेज के URL में हैश न हो, ऐसी स्थिति में यह काम नहीं करेगाlocation.reload(true)बिना पुन: अमान्य किए सभी संसाधनों की नई प्रतियां प्राप्त करना (हालाँकि यह सार्वभौमिक रूप से समर्थित नहीं है और location.reload()क्रोम जैसे कुछ ब्राउज़रों में कोई भिन्न व्यवहार नहीं करेगा )location.reload() विश्वासपूर्वक 'ताज़ा' बटन पर क्लिक करने वाले उपयोगकर्ता के प्रभाव को पुन: उत्पन्न करें।location = locationअगर URL में कोई हैश नहीं है। किसी भी साइट के लिए जो कि किसी भी साइट का उपयोग करती है - या यहां तक कि किसी भी साइट के लिए जहां पेज से लिंक करने वाला कोई भी व्यक्ति URL में एक टुकड़ा जोड़ सकता है - जो इसे तोड़ देता है।
window.location.reload() सर्वर से पुनः लोड होगा और आपके सभी डेटा, स्क्रिप्ट, चित्र आदि को फिर से लोड करेगा।
इसलिए यदि आप केवल HTML को रीफ़्रेश करना चाहते हैं, तो window.location = document.URLबहुत तेज़ी से और कम ट्रैफ़िक के साथ वापस आएगा। लेकिन यह URL में हैश (#) होने पर पृष्ठ को फिर से लोड नहीं करेगा।
location.reload()कैश्ड संसाधनों के पुन: सत्यापन पर बल देता है, यहां तक कि तर्कों के बिना, जबकि window.location = document.URLकैश्ड संसाधनों की सेवा करने में खुशी होती है जब तक कि वे ताजा न हों।
JQuery Loadफ़ंक्शन भी पृष्ठ ताज़ा कर सकता है:
$('body').load('views/file.html', function () {
$(this).fadeIn(5000);
});
जैसा कि सवाल जेनेरिक है, आइए उत्तर के संभावित समाधानों को समेटने की कोशिश करें:
सरल सादे जावास्क्रिप्ट समाधान :
सबसे आसान तरीका एक उपयुक्त तरीके से रखी गई एक पंक्ति समाधान है:
location.reload();
यहां बहुत से लोग लापता हैं, क्योंकि वे कुछ "अंक" प्राप्त करने की उम्मीद करते हैं, यह है कि पुनः लोड () फ़ंक्शन खुद को एक बूलियन को एक पैरामीटर (विवरण: https://developer.mozilla.org/en-US/docs/Web ) के रूप में प्रदान करता है। / एपीआई / स्थान / पुनः लोड )।
Location.reload () विधि वर्तमान URL से संसाधन को पुनः लोड करती है। इसका वैकल्पिक अद्वितीय पैरामीटर एक बूलियन है, जो, जब यह सच होता है, तो पृष्ठ को सर्वर से हमेशा लोड किया जाता है। यदि यह गलत है या निर्दिष्ट नहीं है, तो ब्राउज़र पृष्ठ को अपने कैश से पुनः लोड कर सकता है।
इसका मतलब है कि दो तरीके हैं:
Solution1: सर्वर से वर्तमान पृष्ठ को पुनः लोड करने पर बल
location.reload(true);
Solution2: कैश या सर्वर से पुनः लोड करना (ब्राउज़र और आपके कॉन्फिगर पर आधारित)
location.reload(false);
location.reload();
और यदि आप इसे jQuery के साथ किसी घटना को सुनने के साथ जोड़ना चाहते हैं, तो मैं ".click" या अन्य ईवेंट रैपर्स के बजाय ".on ()" () का उपयोग करने की सलाह दूंगा, उदाहरण के लिए एक अधिक उचित समाधान होगा:
$('#reloadIt').on('eventXyZ', function() {
location.reload(true);
});
यहाँ एक समाधान है कि asynchronously एक पृष्ठ jload का उपयोग कर पुनः लोड करता है। इससे होने वाली झिलमिलाहट से बचा जाता है window.location = window.location। यह उदाहरण एक पृष्ठ दिखाता है जो डैशबोर्ड की तरह लगातार रीलोड होता है। यह युद्ध-परीक्षण है और टाइम्स स्क्वायर में एक सूचना डिस्प्ले टीवी पर चल रहा है।
<!DOCTYPE html>
<html lang="en">
<head>
...
<meta http-equiv="refresh" content="300">
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
<script>
function refresh() {
$.ajax({
url: "",
dataType: "text",
success: function(html) {
$('#fu').replaceWith($.parseHTML(html));
setTimeout(refresh,2000);
}
});
}
refresh();
</script>
</head>
<body>
<div id="fu">
...
</div>
</body>
</html>
टिप्पणियाँ:
$.ajax सीधे $.get('',function(data){$(document.body).html(data)}) सीएसएस / जेएस फ़ाइलों के कारण का उपयोग करना , भले ही आप उपयोग करें cache: true, इसलिए हम उपयोग करते हैंparseHTMLparseHTMLएक bodyटैग नहीं मिलेगा ताकि आपके पूरे शरीर को एक अतिरिक्त div में जाने की आवश्यकता हो, मुझे आशा है कि ज्ञान की यह डली आपको एक दिन मदद करती है, आप अनुमान लगा सकते हैं कि हमने उसके लिए आईडी कैसे चुनी थीdivhttp-equiv="refresh"जावास्क्रिप्ट / सर्वर हिचकी के साथ कुछ गलत होने की स्थिति में बस का उपयोग करें , फिर फ़ोन कॉल किए बिना पृष्ठ फिर से लोड होगाhttp-equivकरता है , ताज़ा करता है कि ठीक करता हैमुझे मिला
window.location.href = "";
या
window.location.href = null;
एक पृष्ठ भी ताज़ा करता है।
इससे किसी भी हैश को हटाने वाले पेज को पुनः लोड करना बहुत आसान हो जाता है। यह बहुत अच्छा है जब मैं iOS सिम्युलेटर में AngularJS का उपयोग कर रहा हूं, ताकि मुझे ऐप को फिर से चलाना न पड़े।
आप जावास्क्रिप्ट location.reload() विधि का उपयोग कर सकते हैं । यह विधि एक बूलियन पैरामीटर को स्वीकार करती है। trueया false। अगर पैरामीटर है true; पृष्ठ हमेशा सर्वर से पुनः लोड किया गया। अगर यह है false; जो डिफ़ॉल्ट है या रिक्त पैरामीटर ब्राउज़र के साथ पृष्ठ को कैश से पुनः लोड करता है।
trueपैरामीटर के साथ
<button type="button" onclick="location.reload(true);">Reload page</button>
default/ falseपैरामीटर के साथ
<button type="button" onclick="location.reload();">Reload page</button>
Jquery का उपयोग करना
<button id="Reloadpage">Reload page</button>
<script type="text/javascript">
$('#Reloadpage').click(function() {
location.reload();
});
</script>
आपको शुद्ध जावास्क्रिप्ट का उपयोग करके किसी पृष्ठ को पुनः लोड करने के लिए jQuery से कुछ भी करने की आवश्यकता नहीं है , बस स्थान जैसे संपत्ति पर पुनः लोड फ़ंक्शन का उपयोग करें:
window.location.reload();
डिफ़ॉल्ट रूप से, यह ब्राउज़र कैश (यदि मौजूद है) का उपयोग करके पृष्ठ को फिर से लोड करेगा ...
यदि आप पृष्ठ को पुनः लोड करना चाहते हैं, तो नीचे दिए गए तरीके को पुनः लोड करने का सही मूल्य दें ...
window.location.reload(true);
यदि आप पहले से ही खिड़की के दायरे में हैं , तो आप खिड़की से छुटकारा पा सकते हैं और कर सकते हैं:
location.reload();
उपयोग
location.reload();
या
window.location.reload();
यदि आप jQuery का उपयोग कर रहे हैं और ताज़ा करना चाहते हैं, तो अपने jQuery को जावास्क्रिप्ट फ़ंक्शन में जोड़ने का प्रयास करें:
मैं ओह पर क्लिक करते समय एक पृष्ठ से एक iframe छिपाना चाहता था h3, मेरे लिए यह काम किया था, लेकिन मैं उस आइटम पर क्लिक करने में सक्षम नहीं था जो मुझे देखने की अनुमति देता थाiframe तब तक शुरू जब तक कि मैं ब्राउज़र को मैन्युअल रूप से ताज़ा नहीं करता ... आदर्श नहीं।
मैंने निम्नलिखित कोशिश की:
var hide = () => {
$("#frame").hide();//jQuery
location.reload(true);//javascript
};
अपने jQuery के साथ सादे जेन जावास्क्रिप्ट को मिलाकर काम करना चाहिए।
// code where hide (where location.reload was used)function was integrated, below
iFrameInsert = () => {
var file = `Fe1FVoW0Nt4`;
$("#frame").html(`<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/${file}\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe><h3>Close Player</h3>`);
$("h3").enter code hereclick(hide);
}
// View Player
$("#id-to-be-clicked").click(iFrameInsert);
यहां सभी उत्तर अच्छे हैं। चूँकि प्रश्न पृष्ठ को पुनः लोड करने के बारे में निर्दिष्ट करता हैjQuery, मैंने सिर्फ भविष्य के पाठकों के लिए कुछ और जोड़ने के बारे में सोचा।
jQuery एक क्रॉस-प्लेटफ़ॉर्म जावास्क्रिप्ट लाइब्रेरी है जिसे HTML के क्लाइंट-साइड स्क्रिप्टिंग को सरल बनाने के लिए डिज़ाइन किया गया है।
~ विकिपीडिया ~
तो आप समझ जाएंगे कि की नींव jQuery, या jQuery पर आधारित है जावास्क्रिप्ट। तो शुद्ध के साथ जा रहा हैजावास्क्रिप्ट जब यह सरल चीजों की बात आती है तो बेहतर है।
लेकिन अगर आपको ए jQuery समाधान, यहाँ एक है।
$(location).attr('href', '');
वर्तमान पृष्ठों को फिर से लोड करने के कई तरीके हैं, लेकिन किसी तरह उन तरीकों का उपयोग करके आप पृष्ठ को अपडेट देख सकते हैं लेकिन कुछ कैश मानों के साथ नहीं होंगे, इसलिए उस समस्या को दूर करें या यदि आप कठोर अनुरोध करना चाहते हैं तो नीचे दिए गए कोड का उपयोग करें।
location.reload(true);
//Here, it will make a hard request or reload the current page and clear the cache as well.
location.reload(false); OR location.reload();
//It can be reload the page with cache
<i id="refresh" class="fa fa-refresh" aria-hidden="true"></i>
<script>
$(document).on('click','#refresh',function(){
location.reload(true);
});
</script>
सरल जावास्क्रिप्ट समाधान:
location = location;
<button onClick="location = location;">Reload</button>
संभवतः सबसे छोटा (12 वर्ण) - इतिहास का उपयोग करें
history.go()
आप इसे दो तरह से लिख सकते हैं। 1 पृष्ठ को फिर से लोड करने का मानक तरीका है जिसे साधारण रिफ्रेश भी कहा जाता है
location.reload(); //simple refresh
और दूसरे को हार्ड रिफ्रेश कहा जाता है । यहां आप बूलियन एक्सप्रेशन पास करते हैं और इसे सही पर सेट करते हैं। यह पुराने कैश को नष्ट करने और खरोंच से सामग्री प्रदर्शित करने वाले पृष्ठ को फिर से लोड करेगा।
location.reload(true);//hard refresh
यह जावास्क्रिप्ट में सबसे छोटा है।
window.location = '';
$(document).on("click", "#refresh_btn", function(event)
{
window.location.replace(window.location.href);
});
यहाँ कोड की कुछ पंक्तियाँ हैं जिनका उपयोग आप jQuery का उपयोग करके पृष्ठ को फिर से लोड करने के लिए कर सकते हैं ।
यह jQuery आवरण का उपयोग करता है और मूल डोम तत्व को अर्क करता है।
यदि आप अपने कोड पर केवल एक jQuery की भावना चाहते हैं तो इसका उपयोग करें और आप कोड की गति / प्रदर्शन की परवाह नहीं करते हैं ।
बस 1 से 10 तक चुनें जो आपकी आवश्यकताओं के अनुरूप हो या इससे पहले पैटर्न और उत्तरों के आधार पर कुछ और जोड़ दें।
<script>
$(location)[0].reload(); //1
$(location).get(0).reload(); //2
$(window)[0].location.reload(); //3
$(window).get(0).location.reload(); //4
$(window)[0].$(location)[0].reload(); //5
$(window).get(0).$(location)[0].reload(); //6
$(window)[0].$(location).get(0).reload(); //7
$(window).get(0).$(location).get(0).reload(); //8
$(location)[0].href = ''; //9
$(location).get(0).href = ''; //10
//... and many other more just follow the pattern.
</script>