jQuery経由でajaxを使用してCAPTCHA画像(および非表示のデータフィールド)を取得し、DOMの準備ができた後にフォームにドロップする連絡先フォームを作成しています。また、CAPTCHA 画像をクリックすると、画像 (および非表示のデータ フィールド) がリロードされます。
CAPTCHA 画像作成スクリプトは、私が数年間使用してきた独自の作成物です。かなり堅牢で正常に動作しますが、ajax を介して Web サイトに統合しようとしたのはこれが初めてです。
大まかに言えば、次のjQueryがあります。サポートしている HTML/CSS/PHP はかなり重要ではないと考えています - 必要に応じていくつかを提供できますが、すべて正常に動作しているようです... 問題は、jQuery または Chrome でのブラウザのキャッシングにあるようです...
$(document).ready(function() {
commentFormCaptchaWrapper = $('#captchawrapper');
// Check DOM for CAPTCHA wrapper... if it's there get the CAPTCHA image
if (commentFormCaptchaWrapper.length > 0) {getCaptchaImage()}
// If the CAPTCHA image is clicked get a new one
commentFormCaptchaWrapper.click(getCaptchaImage);
});
function getCaptchaImage(){
commentFormCaptchaWrapper.html();
$.ajax({
url: '/captcha/ajax.captcha.php',
type: 'post',
cache: false,
success: function(response){
commentFormCaptchaWrapper.html(response);
},
error: function(response){
alert ("Ajax Error");
}
});
}
すべてが Firefox (そして実際には Opera と IE) では思いどおりに機能しますが、Chrome では機能しません。Chrome では、CAPTCHA 画像と非表示フィールドの最初の ajax 呼び出しは正常に機能しますが、CAPTCHA をクリックすると、Captchawrapper div が空になるため (クリックは正常に検出されます)、短いちらつきがありますが、同じ画像がリロードされます。
私のCAPTCHAスクリプトを簡単に説明すると、通常、テキストに基づいて画像を生成し、コンテンツを暗号化してファイル名として使用します(タイムスタンプサフィックス付き)-画像は一意の名前でキャッシュされます. したがって、CAPTCHA スクリプトは、使用されるたびに完全に一意の異なるファイル名を提供します。
私はまだjQueryに完全に対応していませんが、私が知っている限りjQueryのajaxキャッシングをオフにしているので、何が問題なのかわかりません...誰か助けてくれますか?