2012-09-14 20 views
0

我有一个jquery模型拨号框下面。当用户单击页面上的某个链接时,对话框将显示Captcha。当用户输入无效捕获图像应刷新并应显示新的文本。但是这没有发生。下面的代码片段:刷新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> 

当验证用户点击,将文本通过$ .getJSON发送到MVC控制器。控制器返回包含在JSON对象Captcha中的isCpatchValid和encryptedText。我下面一个做,如果 验证码文字无效:

$( “#captchaImage”)ATTR( “SRC”, “?〜/ CaptchaImage.ashx文本=” + Captcha.encryptedText );

在Chrome调试器上,我可以看到控制器正在返回正确的加密文本。但是上面的这一行并不认为是新鲜的拍摄图像。我怀疑这是由于异步调用。

有人请帮助我如何刷新Jauery对话框上的验证码图像。

回答

1

您不能在javascript中使用“〜”功能。这是一个.NET的事情。你需要它环绕一个.NET调用,如:

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

或者,如果这个JS是在一个单独的文件,你可以定义背视图中的一个变量,然后在JS文件使用它,如:

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

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