Önbelleğe alma ile sorun (belki) AJAX ve PHP kullanırken

1 Cevap php

Öncelikle bazı benzer mesajları fiding denedim ama oldukça bir şey bulamadı. Ben FF bu sorunu görmek ve IE değil sadece başlıca nedeni.

Ben bazı verilerle hiçbir sorun db bir MySQL güncelleme olduğu bir web sayfası vardı. Sonra bugün, ben onun yerine küçük, orta ve büyük o 1, 2 ve 3, bu nedenle boyutları için, yerine bir değerin kimliğini kullanın böylece bu yaptığı yolu açık.

Söz konusu site here ve 1234 kodunu girerek bir test galeriye alabilirsiniz.

Ben script sepetine eklemek her zaman başına outoput alıyorum.

Bu nedenle radyo düğmeleri altında değerler 1, 2 ve 3 vardır.

Aşağıdaki gibi bit için HTML:

<input type="radio" name="imageSize" id="imageSize" value="1"/> Small (6x4) - &pound;4.99<br/>
<input type="radio" name="imageSize" id="imageSize" value="2"/> Medium (7x5) - &pound;6.99<br/>
<input type="radio" name="imageSize" id="imageSize" value="3"/> Large (8x6) - &pound;10.99

Ben bu çalışma almak için el kodu şimdi için de karar verdik.

Bu dahil bir JavaScript dosyasına gönderilen alır ve sonra bu şekilde gibi bir ekleme sayfaya gönderilir alır:

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;
}
}

Eğer ne olursa olsun, gördüğünüz gibi, uyarı açılan 1. diyor. Eğer orta veya büyük seçseniz bile. Burada neler oluyor?

1 Cevap

Burada size sorun çağırıyor olmasıdır

document.getElementById('image_Size').value

Lizard belirtildiği gibi, aynı kimliği ile 3 giriş var. ve kimlik olması gerekiyordu çünkü document.getElementById, kimliği ile ilk elemanı dönecektir unique.

Burada seçilen değeri almak için bir yoldur, ve jQuery dahil beri ben senin için jQuery yazacak.

var image_Size = 0;
$('[name=image_Size]').each(function() {
   if ($(this).attr('checked')) image_Size = $(this).val();
});

Ve googling biraz bu şık zaman tasarrufu bulur!

var image_Size = $('[name=image_Size]:checked').val();

Bu yardımcı olur umarım! Ve ayrıca, farklı nocache ayarlamak isteyebilirsiniz:

nocache = new Date().getTime();

Bu size Unix dönemi beri ms zaman verecektir, bu nedenle kullanıcının sayfayı istediğinde farklı her olacaktır.

Eğer jQuery API ile daha fazla yardıma ihtiyacınız varsa, sana başlamanızı öneririm here.

Bu yardımcı olur umarım!

-Stephen