[英]Issue with caching (maybe) when using AJAX and PHP
首先,我嘗試尋找一些類似的職位,但找不到任何東西。 主要是因為我在FF中而不是僅在IE中看到此問題。
我有一個網頁正在更新MySQL數據庫,但某些數據沒有問題。 然后今天,我改變了這樣做的方式,以便可以使用ID而不是值,因此對於大小,它是1、2和3,而不是小,中和大。
有問題的站點在這里 ,您可以輸入代碼1234進入測試庫。
每當您添加到購物籃中時,我都會輸出該腳本。
因此,在單選按鈕下有值1、2和3。
此位的HTML如下:
<input type="radio" name="imageSize" id="imageSize" value="1"/> Small (6x4) - £4.99<br/>
<input type="radio" name="imageSize" id="imageSize" value="2"/> Medium (7x5) - £6.99<br/>
<input type="radio" name="imageSize" id="imageSize" value="3"/> Large (8x6) - £10.99
我現在決定將其交上代碼以使其正常工作。
這將發送到包含的JavaScript文件,然后發送到插入頁面,如下所示:
unction createObject() {
var request_type;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
request_type = new ActiveXObject("Microsoft.XMLHTTP");
}else{
request_type = new XMLHttpRequest();
}
return request_type;
}
var http = createObject();
/* -------------------------- */
/* INSERT */
/* -------------------------- */
/* Required: var nocache is a random number to add to request. This value solve an Internet Explorer cache issue */
var nocache = 0;
function insert() {
// Optional: Show a waiting message in the layer with ID login_response
document.getElementById('insert_response').innerHTML = "Just a second..."
// Required: verify that all fileds is not empty. Use encodeURI() to solve some issues about character encoding.
var image= encodeURI(document.getElementById('image').value);
var image_Size= encodeURI(document.getElementById('image_Size').value);
alert(image_Size);
alert(nocache);
// Set the random number to add to URL request
nocache = Math.random();
// Pass the login variables like URL variable
http.open('get', 'insert.php?image='+image+'&imageSize='+image_Size+'&nocache = '+nocache);
http.onreadystatechange = insertReply;
http.send(null);
}
function insertReply() {
if(http.readyState == 4){
var response = http.responseText;
// else if login is ok show a message: "Site added+ site URL".
document.getElementById('insert_response').innerHTML = 'Image added:'+response;
}
}
如您所見,無論發生什么情況,警報彈出窗口都會顯示1.即使選擇“中”或“大”。 這里發生了什么?
你的問題是你在打電話
document.getElementById('image_Size').value
就像Lizard所說的,您有3個具有相同ID的輸入。 document.getElementById將返回具有ID的第一個元素,因為ID應該被認為是唯一的 。
這是一種獲取選定值的方法,由於您已經包括了jQuery,因此我將為您編寫它。
var image_Size = 0;
$('[name=image_Size]').each(function() {
if ($(this).attr('checked')) image_Size = $(this).val();
});
稍加搜索就可以節省時間!
var image_Size = $('[name=image_Size]:checked').val();
我希望這有幫助! 而且,您可能希望設置不同的nocache:
nocache = new Date().getTime();
自Unix時代以來,這將為您提供以毫秒為單位的時間,因此每次用戶請求頁面時,時間都會有所不同。
如果您需要有關jQuery API的更多幫助,建議您從此處開始。
我希望這有幫助!
-斯蒂芬
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.