Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 12520|Απάντηση: 2

[Jquery] [Στροφή] σε πρόβλημα προσωρινής αποθήκευσης jQuery.getJSON

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 5/9/2015 10:21:58 π.μ. | | |
Η μέθοδος getJson του jquery διαβάζει το ίδιο αίτημα απευθείας από την προσωρινή μνήμη μετά το πρώτο αίτημα στον διακομιστή για να λάβει τα δεδομένα που επιστρέφονται και δεν ζητά πλέον τη βάση δεδομένων.

Δείτε πώς μπορείτε να το διορθώσετε:

1 Κάντε τη διεύθυνση URL διαφορετική για κάθε κλήση
Μέθοδος: Προσθέστε έναν τυχαίο αριθμό στην παράμετρο.
Παράδειγμα 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Παράδειγμα 2:
"xxx.aspx?randID="+Math.random
Παράδειγμα 3:
"xxx.aspx?randID="+ escape(new Date())
2 Ορίστε την προσωρινή μνήμη σε False
$.ajax μη αποθηκευμένη έκδοση:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
ειδοποίηση (msg);
}
});
3. Συμπεριλάβετε την ακόλουθη δήλωση στο επάνω μέρος του labels.html αρχείου:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<META HTTP-EQUIV="Λήγει" CONTENT="-1">
4. Η συνάρτηση φόρτωσης μπορεί όχι μόνο να καλέσει HTML, αλλά και σενάριο, όπως labels.php, μπορείτε να χρησιμοποιήσετε τη συνάρτηση κεφαλίδας στο αρχείο php:

<?php

κεφαλίδα("Cache-Control: no-cache, must-revalidate");

?>
5 Χρησιμοποιήστε τη μέθοδο post αντί για get.
Όταν χρησιμοποιείτε τη μέθοδο Post, πρέπει να προσέξετε:
Ορίστε τον Τύπο περιβάλλοντος της κεφαλίδας σε application/x-www-form-urlencode για να εξασφαλίσετε ότι ο διακομιστής γνωρίζει ότι υπάρχουν μεταβλητές παραμέτρων στην οντότητα. Συνήθως χρησιμοποιείτε το SetRequestHeader("Context-Type","application/x-www- form-urlencoded) του αντικειμένου XmlHttpRequest. ")。 Παράδειγμα:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Η παράμετρος είναι ένα ζεύγος κλειδιού-τιμής που αντιστοιχεί στο όνομα/τιμή και κάθε ζεύγος τιμών διαχωρίζεται με ένα σύμβολο >. Για παράδειγμα, var name=abc&sex=man&age=18, δώστε προσοχή στο var name=update.php;

abc&sex=man&age=18 και var name=?abc&sex=man&age=18 είναι γραμμένα λάθος.
Το όρισμα αποστέλλεται με τη μέθοδο Αποστολή, π.χ. xmlHttp.send(name); Εάν πρόκειται για μέθοδο get, απευθείας xmlHttp.send(null);

Η παράμετρος αιτήματος από την πλευρά του διακομιστή κάνει διάκριση μεταξύ Λήψη και Δημοσίευση. Εάν είναι η μέθοδος λήψης, τότε $username = $_GET["όνομα χρήστη"]; Εάν πρόκειται για μέθοδο ανάρτησης, τότε $username = $_POST["όνομα χρήστη"];
6 Προσθήκη κεφαλίδας ("Cache-Control: no-cache, must-reva lidate") στην πλευρά του διακομιστή.
7 Προσθέστε xmlHttpRequest.setRequestHeader("If-Modified-Since","0") πριν ο ajax στείλει το αίτημα.
8 Προσθέστε xmlHttpRequest.setRequestHeader("Cache-Control","no-cache") πριν ο ajax στείλει το αίτημα.




Προηγούμενος:c# Μετατροπή \u64CD\u4F5C\u6210\u529F σε Κινέζικα "Επιτυχής επιχείρηση"
Επόμενος:Επικύρωση jQuery html5Επικύρωση προσθήκης με βάση φόρμες HTML5
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 5/9/2015 10:23:09 π.μ. |
url?username=test&aaa= Math.random()
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 5/9/2015 10:24:24 π.μ. |
Μέθοδος $.getJson Όταν ζητείται επανειλημμένα η ίδια σελίδα, μόνο τα δεδομένα φορτώνονται από την προσωρινή μνήμη και η διεύθυνση URL πρέπει να ακολουθείται από δυναμικές παραμέτρους κάθε φορά που φορτώνεται ξανά
$.getJson('a.ashx?t='+new Date() ,'{a:b}',fun.... )
Η αλλαγή παραμέτρων στη λίστα παραμέτρων δεν είναι έγκυρη.
αλλαγή συνάρτησηςValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = νέα Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Αυτό σχετίζεται με τον μηχανισμό προσωρινής αποθήκευσης του προγράμματος περιήγησης και μπορείτε επίσης να ρυθμίσετε τη σελίδα ώστε να μην αποθηκεύεται στην προσωρινή μνήμη, έτσι ώστε να μην χρησιμοποιείται αυτή η παράμετρος.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' title='Δεν μπορείτε να δείτε καθαρά; Αλλάξτε ένα! ' πλάτος='50' ύψος='22'/>
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com