2012-09-14 2 views
0

나는 jquery 모델 다이얼로그 아래 상자를 가지고 있습니다. 사용자가 페이지의 링크 중 하나를 클릭하면 Captcha와 함께 대화 상자가 나타납니다. 사용자가 유효하지 않은 captcha를 입력하면 captch 이미지 으로 새로 고쳐 져야하고 새 텍스트가 표시되어야합니다. 그러나 이것은 일어나지 않습니다. 아래는 코드입니다 : 유효성 검사에 사용자가 클릭, 텍스트가 $ .getJSON를 통해 MVC의 컨트롤러로 전송됩니다JQUERY 대화 상자에서 Captcha 이미지 새로 고침

<div id="model"> 
    <img id="captchaImage" src="@Url.Content("~/CaptchaImage.ashx?text=" + ViewBag.EncryptedCaptcha)" /> 
    <input id="captchText" type="text" value="" /> 
    <a href="#"id="verfiyCaptcha">Validate</a> 
</div> 

. 컨트롤러는 isCpatchValid 및 encryptedText를 JSON 객체 Captcha에 래핑하여 반환합니다. 나는 보안 문자 텍스트가 유효하지 경우 아래 수행했습니다.

$ ("#의 captchaImage") ATTR ("SRC", "? ~/CaptchaImage.ashx 텍스트 ="+ Captcha.encryptedText);

Chrome 디버거에서 컨트롤러가 올바른 암호화 된 텍스트를 반환하는 것을 볼 수 있습니다. 그러나 위의이 줄은 captch 이미지를 새 것으로 간주하지 않습니다. 비동기 호출로 인한 것 같습니다.

누군가가 나를 Jauery 대화 상자에서 captcha 이미지를 새로 고치는 방법을 도와주십시오.

답변

1

자바 스크립트에서 "~"기능을 사용할 수 없습니다. 그것은 .NET의 것입니다. 다음 JS 파일에서 사용,

attr("src", "@Url.Content("~/CaptchaImage.ashx")?text=" + Captcha.encryptedText) 

또는 별도의 파일에이 JS, 당신은 다시보기에 변수를 정의 할 수 있습니다 : 당신처럼 .NET 호출 주위를 포장해야합니다 like :

** in the view ** 
var CAPTCHA_IMAGE_URL = "@Url.Content("~/CaptchaImage.ashx")"; 

** in the JS file ** 
attr("src", CAPTCHA_IMAGE_URL + "?text=" + Captcha.encryptedText)