2011-06-11 4 views
0

Google에서 연구를 시도했지만 여기에서 몇 가지 질문을 통해 살펴 보았습니다. 솔루션 중 일부를 시도했지만 작동시키지 못합니다.jQuery 문제를 사용하여 보안 문자 새로 고침

<td> 
    <img id="captcha" src="captcha.php" name="captcha" /> 
    <img src="refresh.jpg" width="25" alt="" id="refresh_captcha" name="refresh_captcha" /> 
    <input type="text" name="txtCaptcha" id="txtCaptcha" size="10" /> 
</td> 

아래의 코드는 작동하지 않습니다뿐만 아니라

$("#refresh_captcha").click(function() { 
    $("#captcha").attr("src","captcha.php?r=" + Math.random()); 
}); 

그리고이 :

$('.refresh_captcha').click(function(){ 
    $('img').attr('src', 'captcha.php?cache=' + new Date().getTime()); 
}); 

가 나는 또한이 시도

jQuery(function($) { 
    jQuery('#captcha').after("<a href=\"#\" id=\"refresh_captcha\">Refresh<\/a>"); 
    jQuery('body').delegate('#refresh_captcha','click',function(){ 
     jQuery.ajax({ 
      'success':function(html){ 
       jQuery("#captcha").attr("src",html) 
      }, 
      'url':'/captcha.php?refresh=1', 
      'cache':false 
     }); 
     return false; 
    }); 
}); 

누구든지 나를 도울 수 ?

+0

무엇이 문제입니까? "작동하지 않는"것은 무엇입니까? – corroded

+0

가 작동하지 않습니다. captcha가 새로 고침되지 않음을 의미합니다. – user236501

+0

'$ ('. refresh_captcha')'클래스 이름이 'refresh_captcha'인 요소가 없기 때문에''('. refresh_captcha ')''는 작동하지 않습니다. 당신이 클릭 할 때마다'r'의 값이 무작위로 나타나는 것을 보시겠습니까? – tradyblix

답변

0

캐시도 비우려고 했습니까? (편집 : 네, 당신은 ...) 모든 브라우저에서 문제가 나타 났습니까? 직접 호출이 작동하기 때문에 브라우저가 이전 이미지를 캐시합니다. cache: false 대신 'cache' = false

이 나를 위해 백엔드에서 아약스 - 통화 및 자바 스프링을 사용하여이 솔루션은 일을보십시오 : 그것에 대해

function generateCaptcha() { 

    $.ajaxSetup({ 
     cache: false 
    }); 

    var timestamp = (new Date()).getTime(); 

    requestMappingCaptcha = "/generateCaptcha"; 

    jQuery.get(requestMappingCaptcha, timestamp, function(data) { 
       $("#captchaImg").slideUp("fast"); 

       if (!$.browser.msie || ($.browser.msie && $.browser.version == "9.0")) { 
         // animate reloadArrows 
         $("#reloadArrows").rotate({ 
         angle:0, 
         animateTo:360 
        }); 
       } 

       // setting new source 
       var newSrc = $("#captchaImg").attr("src").split("?"); 
       newSrc = newSrc[0] + "?" + timestamp; 
       $("#captchaImg").attr("src", newSrc); 
       $("#captchaImg").slideDown("fast"); 
     }); 
} 

그리고 HTML을 : 그것은 무엇을

     <div class="container captcha"> 
          <spring:url value="/captcha.jpeg" var="url"/> 
          <div class="step2_captcha"> 
           <img id="captchaImg" src="${url}" alt="Generatin captcha..." width="180" height="42" border="0" name="captchaImg"/> 
          </div> 
          <span class="help captcha"> 
           <img src="/r.png" onclick="generateCaptcha();" id="reloadArrows" title="Reload Captcha"/> 
          </span> 
          &nbsp; 
         </div> 

합니까!? 아이콘을 클릭하면 generateCaptcha 함수가 호출됩니다. 요청 매핑은 서버 함수 (내 경우 java)를 호출하고 새 captcha를 이전 URL과 동일한 URL로 렌더링합니다. 캐싱을 사용하지 않도록 설정하고 get으로 타임 스탬프를 보내려면 해당 항목을 가져옵니다. 그런 다음 jQuery의 작은 마법이 완료되면 captcha의 소스가 image-Url + timestamp로 변경됩니다.

희망은 PHP에서도 유용 할 것입니다.