刷新JQUERY对话框上的Captcha图像



我在下面有一个jquery模型对话框框。当用户单击页面上的某个链接时,会出现带有Captcha的对话框。当用户输入无效的captch时,captch图像应刷新并显示新文本。但这并没有发生。以下是代码片段:

<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控制器。控制器返回isCpatchValid并加密JSON对象Captcha中包装的文本。如果captcha文本无效:

$("#captchaImage").attr("src","~/captchaImage.ashx?text="+Captcha.encryptedText);

在Chrome调试器上,我可以看到控制器正在返回正确的加密文本。但上面的这句话并不认为是对captch形象的更新。我怀疑这是由于异步调用。

有人能帮我刷新Jauery对话框上的captcha图像吗。

您不能在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)

最新更新