2017-07-18 1 views
0

私は古典的なASPコードを持っています。私は変数termsをAjaxからVBスクリプト関数に渡したいと思います。私は以下のコードを試しましたが、動作しません。古典的ASPのAjaxからVBスクリプト関数に渡す

これは初めてのajaxを使用したコードの書き方です。だから私はこれが非常に基本的であることを認識しています..しかし、どこが間違っているかを知ることはできません。誰も助けてくれませんか?

<script type="text/Javascript">   
    $(document).ready(function(){ 
var availableCode = new Array();    

function customFilter(terms) { 
       $.ajax({ 
       type: "POST", 
       url: "Test.asp", // This asp file name itself 
       data: {"strUserInput": '"' + $("#terms").val() + '"' }, 
       cache: false, 
       success: function() { 
         alert ("returned from server side"); 
       } 
      }); 

      <% 
      Dim idxJs 
      for idxJs = 0 to 19 
      %> 
       availableCode[<%=idxJs %>] = unescape('<%= Escape(codeList(idxJs)) %>'); 

      <% next %> 

       return availableCode; 
      }; 

      $("#frmBillCode").autocomplete({ 
       multiple: true, 
       mustMatch: false, 
       minLength: 4, 
       delay: 100, 
       search: function (event,ui) { 
       window.pageIndex = 0; 
       }, 
       source: function (request, response) { 
       response(customFilter(request.term)); 
       } 
      }); 
     }); 
</script> 

<% 
    Dim strUserInput 
    strUserInput = Request.Form("strUserInput") 
    Document.write(strUserInput) 
%> 
+3

できません。 JavaScriptはクライアント側で実行され、VBはサーバー側で実行されます。 – dave

+1

あなたはクライアント側から直接サーバー側のコードを呼び出すことはできません、あなたはajaxを使用する必要があります –

+0

@daveすぐに応答していただきありがとうございます。私は恐れますが、私はWeb開発の初心者です。参考文献を教えてもらえますか? – Chrissa

答えて

0

このロジックは私たちのシステムでは機能しませんでしたので、私は遅延読み込みを使用するように変更しましたが、今は私たちのビジネス要件に取り組んでいます。アドバイスをいただき、ありがとうございます。

2

警告文が無効であるため、おそらく動作していない可能性があります。引用符で囲んだ文字列に警告しようとしています!あなたが試していたことをやりたいのであれば(この場合、ajax呼び出しの後でstrUserInputに格納された新しい値にアクセスすることができないため警告は役に立たない)、その周りに引用符が必要です。

alert('<%=strUserInput%>'); 

もう一度、あなたはそれを必要としません、私はあなたが潜在的に失敗する理由を説明したかっただけです。

のは、これを試してみましょう:何がまだ起きていない場合

<% 
    Dim strUserInput 
    strUserInput = Request.Form("strUserInput") 
    if strUserInput <> "" then  '-- we know it's an ajax call 
     Response.Write(strUserInput) 
     Response.End  '-- when doing ajax calls, it's good to add this line so that nothing after this line is sent back to the client 
    end if 
%> 

<script type="text/Javascript">   
    $(document).ready(function(){ 
     customFilter();  // you need to call your function on page load for it to do something 
     function customFilter() { 
      var terms = 'abc';  // what is this line for? 
      $.ajax({ 
       type: "POST", 
       url: "Test.asp", << This asp file name 
       data: {strUserInput: '"' + $("#terms").val() + '"' }, // removed quotes from strUserInput 
       cache: false, 
       success: function(result) {  // result is just a variable, it can be named anything 
         alert (result); 
       } 
      }); 
     } 
    }); 
</script> 

、ほとんどのブラウザでは、あなたがF12を打つことができ、それが出てくるだろう、あなたの開発者コンソールを知るようになります。 (Chromeの)CONSOLEタブを選択すると、javascriptエラーがあれば表示されます。

幸運!

+0

ありがとうございました。自分のコードを修正し、データベースからデータを取得するためにこのロジックをオートコンプリートテキストボックスに使用しているので、詳細なコードを投稿しました。コンソールの下でエラーをスローしませんが、変数strUserInputがVBスクリプトに正しく渡されないようです。クエリは、strUserInputの選択基準を無視します。要素:URLに同じASPコードを使用できますか? – Chrissa

関連する問題