2017-09-27 4 views
0

私はいくつかの助けを必要とし、JS上記Javaスクリプト、ASP.NET

<asp:Image ID="imgCaptcha" CssClass="Captcha" ImageUrl="/ashx/captcha.ashx" runat="server" /> 
<button id="refreshcaptcha" type="button" class="btn btn-default btn-lg" aria-label="Refresh"> <i class="fa fa-lg fa-refresh"></i> </button> 

JScriptの

$("#refreshcaptcha").click(function (parameters) { 
    $.ajax({ 
     type: "POST", 
     url: "contactus.aspx/RefreshCaptcha", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      var src = $('#<%= imgCaptcha.ClientID %>').attr("src"); 
      if (endsWith(src, "ashx")) { 
       $('#<%= imgCaptcha.ClientID %>').attr("src", src + "?" + Math.random()); 
      } else { 
       src = src.substring(0, src.indexOf('?')); 
       $('#<%= imgCaptcha.ClientID %>').attr("src", src + "?" + Math.random()); 
      } 
     }, 
     failure: function (response) {} 
    }); 
    function endsWith(str, suffix) { 
     return str.indexOf(suffix, str.length - suffix.length) !== -1; 
    } 
}); 

が.aspxのページ上にあり、それはOK働いて、 はどのように私はJSのこのブロックを移動することができます別々のリンクされた.jsファイルにコード化しますか? JSコードに変更する必要があるのは何ですか?

+0

は、なぜあなたはPOSTリクエストを作り、あなたは何の 'データがないときは、送信されたデータOコンテンツタイプがJSONであることを主張している:configオブジェクトで'属性を? – Quentin

+0

はあなたが使用している構造に依存しますが、一般的には新しいjsファイルを作成し、そのページの '' –

+0

@Dumisani - 動作しません。 '$( '#<%= imgCaptcha.ClientID%>')'は静的なjsファイルで壊れます。 – Quentin

答えて

0

<asp:Image>にClientIDMode属性を追加して静的に設定し、そのIDを使用してjavascriptファイルにアクセスします。例えば

<asp:Image ID="imgCaptcha" ClientIDMode="Static" CssClass="Captcha" ImageUrl="/ashx/captcha.ashx" runat="server" /> 

$('#imgCaptcha').attr("src", src + "?" + Math.random()); 
+0

"ClientIDModeをあなたに追加し、それを"に設定します。 - これは文法やスペルミスが多すぎるため、あなたが何を言おうとしているのか分かりません。 – Quentin

+0

Staticの "attrivute"(属性?)が実際にどのような設定をしているかについての説明は、おそらくこれをより良い答えにするでしょう。 – Quentin

+0

DOMのコントロールのIDをサーバ側のコントロールIDと同じにする – llouk

-1

NON ASP環境でこれをどのように行うのかを考えてみましょう。何が変わったのですか? ASPはその点で違いはありません。 ASPページにJSファイルを含めます。一般的に、これはあなたのページのための標準的なヘッダのいくつかの並べ替えで行われます。

+0

JSには、ASP.NETによって生成されるID値が含まれています。あたかもASP.NETが存在しなかったかのようにコードを書くだけで、それらのギャップを埋めることはできません。 – Quentin

関連する問題