Η μέθοδος 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 στείλει το αίτημα.
|