背景:從通過AJAX/jQuery的XML文件無法刪除XML文件
我的網頁加載項並顯示它們(正常工作)
頁也有通過AJAX/jQuery的提交表單到寫入XML文件中的PHP文件,然後通過AJAX/jQuery的重新加載XML條目並顯示它們(正常工作)
我有以下奇怪的問題:
如果我刪除通過FileZilla的XML文件,或嘗試通過上傳ac來覆蓋XML文件opy從我的本地機器上看,當我看着我的頁面時,條目根本不會改變。實際上,如果用新副本覆蓋XML文件,那麼如果我在地址欄中導航到新副本,則會看到新副本:http://mysite.com/myxmlfile.xml,但是,在顯示XML條目的頁面中,舊條目(如文件是從未被覆蓋/刪除)仍然顯示!
困惑!
這是我的PHP文件:
<?php
header('Pragma: no-cache');
header('Cache: no-cache; must-revalidate;');
function signGuestbook($entry){
$date = date("n.d.Y");
$name = $entry['name'];
$email = $entry['email'];
$comment = $entry['comment'];
$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$doc->load('guestbook.xml');
$root = $doc->firstChild;
$e = $doc->createElement('entry');
$dateNode = $doc->createElement('date', $date);
$nameNode = $doc->createElement('name', $name);
$emailNode = $doc->createElement('email', $email);
$commentNode = $doc->createElement('comments', $comment);
$e->appendChild($dateNode);
$e->appendChild($nameNode);
$e->appendChild($emailNode);
$e->appendChild($commentNode);
$root->appendChild($e);
$doc->formatOutput = true;
$doc->save('guestbook.xml');
}
function loadGuestbook(){
$gBook = new DOMDocument();
$gBook->load('guestbook.xml');
$entries = $gBook->getElementsByTagName('entry');
$entries_arr = array();
foreach($entries as $entry)
{
$date = $entry->getElementsByTagName('date')->item(0)->nodeValue;
$name = $entry->getElementsByTagName('name')->item(0)->nodeValue;
$email = $entry->getElementsByTagName('email')->item(0)->nodeValue;
$comment = $entry->getElementsByTagName('comments')->item(0)->nodeValue;
$entries_arr[] = array(
'date' => $date,
'name' => $name,
'email' => $email,
'comment' => $comment
);
}
return json_encode($entries_arr);
}
$entry = json_decode(stripcslashes($_POST['entry']), true);
if($entry != null){
signGuestbook($entry);
}
header("Content-type: text/plain");
echo loadGuestbook();
?>
這是我的JS文件:
$(document).ready(function(){
$.post('guestbook.php?' + new Date().getTime(), loadGuestbook, "text");
});
function loadGuestbook(gBook){
var gBookDiv = $('div#guestbook');
gBookDiv.empty();
var entries = JSON.parse(gBook);
$.each(entries, function(i, entry){
gBookDiv.prepend(
'<div class="entry">' +
'<span class="date">' + entries[i].date + '</span>' +
'<strong class="blue">Name:</strong><span class="name">' + entries[i].name+ '</span><br />' +
'<strong class="blue">Email:</strong><span class="email">' + entries[i].email + '</span><br />' +
'<strong class="blue">Comments:</strong><p>' + entries[i].comment + '</p>' +
'</div>'
);
});
}
function signGuestbook(){
var name = $('input#name').val();
var email = $('input#email').val();
var comment = $('textarea#comments').val();
if(name == null || name == '' || email == null || email == ''){
alert('You must provide a name and email.');
}
else{
var entry = {
"name" : name,
"email" : email,
"comment" : comment
};
var entryString = JSON.stringify(entry);
$.post('guestbook.php?' + new Date().getTime(), { entry : entryString }, loadGuestbook, "text");
$('input#name').val('');
$('input#email').val('');
$('textarea#comments').val('');
}
}
你有沒有清晰的瀏覽器緩存或可能有一些服務器端緩存啓用? – 2010-11-12 05:55:09
是的,我清除了我的瀏覽器緩存。據我所知,我沒有啓用服務器端緩存,儘管這似乎是一個合理的原因。 – Didaxis 2010-11-12 05:56:27