0

以下にjqueryモデルのダイアログボックスがあります。ユーザーがページ上のリンクのいずれかをクリックすると、ダイアログ ボックスにキャプチャが表示されます。ユーザーが無効なキャプチャを入力すると、キャプチャ イメージが更新され、新しいテキストが表示されます。しかし、これは起こっていません。以下はコード スニペットです。

<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 にラップされた encryptedText を返します。キャプチャ テキストが有効でない場合は、以下を実行しました。

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

Chrome デバッガーでは、コントローラーが正しい暗号化テキストを返していることがわかります。しかし、上記のこの行は、キャプチャ イメージを更新しているとは見なされません。これは非同期呼び出しが原因であると思われます。

Jaueryダイアログボックスのキャプチャ画像を更新する方法を教えてください。

4

1 に答える 1

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)
于 2012-09-14T22:32:55.907 に答える