Asp.net mvc 3 在JQUERY对话框上刷新Captcha图像
我在下面有一个jquerymodel拨号框。当用户单击页面上的某个链接时,将显示带有验证码的对话框。当用户输入无效的captch时,应刷新captch图像并显示新文本。但这并没有发生。下面是代码片段:Asp.net mvc 3 在JQUERY对话框上刷新Captcha图像,asp.net-mvc-3,jquery,Asp.net Mvc 3,Jquery,我在下面有一个jquerymodel拨号框。当用户单击页面上的某个链接时,将显示带有验证码的对话框。当用户输入无效的captch时,应刷新captch图像并显示新文本。但这并没有发生。下面是代码片段: <div id="model"> <img id="captchaImage" src="@Url.Content("~/CaptchaImage.ashx?text=" + ViewBag.EncryptedCaptcha)" /> <in
<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>
当用户单击Validate时,文本通过$.getJSON发送到MVC控制器。控制器返回包装在JSON对象验证码中的isCpatchValid和encryptedText。我做了一个下面的如果
验证码文本无效:
$(“#captchaImage”).attr(“src”,“~/captchaImage.ashx?text=”+
验证码(加密文本)
在Chrome调试器上,我可以看到控制器正在返回正确的加密文本。但上面的这一行并不认为能刷新captch图像。我怀疑这是由于异步调用
有人能帮我刷新Jauery对话框上的验证码图像吗。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)