2

私はAjaxコンタクトフォームを書いています。私も独自のキャプチャを書きました。しかし、画像の更新に問題があります。私はこのように書いています:

キャプチャのリロード:

<code>$("#captchaSection").load("captcha_p.php");</code>

そして captcha_p.php ファイル:

<code>< img src="captcha.php" name="imgCaptcha" /></code>

そして、この行を capcha.php に追加しました。

header("Cache-Control: no-cache, no-store, must-revalidate");
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

Google Chrome と Safari で完璧に動作します。ただし、Firefox と Explorer では機能しません。

ありがとう!

4

1 に答える 1

4

Firefox と IE は画像をキャッシュしているようです。これを防ぐには、タイムスタンプを URL と画像ソースに追加します。

Javascript では、以下を使用できますnew Date().getTime()

$("#captchaSection").load("captcha_p.php?" + new Date().getTime());

PHP では、以下を使用できますmicrotime()

< img src="captcha.php?<?php echo microtime(); ?>" name="imgCaptcha" />

.load()を使用して画像を含む HTML をロードするメリットはありません。画像のプロパティを変更する方が簡単srcです。たとえば、次のようになります。

// refresh captcha
$('img[name=imgCaptcha]').prop('src', 'captcha.php?' + new Date().getTime());
于 2013-10-23T13:23:46.120 に答える