2013-05-02 6 views
4

Как я могу загрузить это изображение, чтобы получить новый с сервера, используя javascript, не перезагружая страницу?Как перезагрузить изображение с помощью javascript

<img src="?option=com_fcse&task=getimage&width=100&height=40&characters=5&r=<?php echo mt_rand(0, 10000000); ?>" /> 

Спасибо

+2

Рассматривали ли вы погуглить 'яваскрипт релоада image'? –

+0

Да, но эти примеры выглядят так, будто они обналичивают мой образ. вероятно, мне нужно сбросить rand в javascript сейчас – themis

ответ

2

Это следует сделать это:

thatImgObj.src = thatImgObj.src.replace(/&r=\d+/, "&r="+ ~~(Math.random()*1e7)); 

(Конечно, с шансом 1e-7 получать тот же cachebreaker снова - отметка времени может быть лучший вариант)

+0

oh man this rocks. это регулярные выражения? – themis

+1

Да, просто что-то, чтобы заменить этот параметр URL. В этом простом случае вы могли бы использовать некоторую другую строковую функцию, чтобы удалить цифры с конца и добавить некоторые новые случайные. – Bergi

1

Ну, самый простой способ, я думаю, было бы изменение атрибута src в JavaScript. Так как: YouImageElement.src += "&rand2"+Math.random();

Изменение атрибута src приведет к перезагрузке изображения, и поскольку у него есть другой случайный номер, заданный на стороне клиента, его не следует кэшировать.

1

Ваш код

Добавлено id="img1"

<img id="img1" src="?option=com_fcse&task=getimage&width=100&height=40&characters=5&r=<?php echo mt_rand(0, 10000000); ?>" /> 

JS код:

var newImage = new Image(); 
newImage.src = document.getElementById("img1").src + "&_=" + new Date().getTime(); 

Добавлен cachebreaker в конце URL

+0

Да, это работает – themis

Смежные вопросы