2017-03-13 12 views
0

Classic ASPとサーバーサイドスクリプティング(jQuery用のVBScriptとJavaScript)の組み合わせを使用して、MySQLからフェッチされたデータに基づいてjQueryオートキャンプ機能を追加します。 jQueryスクリプトタグは、サーバー側の作業が完了した後に初めてロードされるため(論理的に)、$が認識されないという問題があります。 jQueryスクリプトタグをサーバー側で実行する方法はありますか?結局のところ、jQueryは単にライブラリにすぎませんか? そうでない場合は、MySQLに格納されたデータに基づいてオートコンプリート機能を使用する場合の解決策は何でしょうか? ありがとう!Classic ASPを使用したMySqlデータによるjQueryオートコンプリート

私のコードは次のとおりです。

<!DOCTYPE html> 
<html> 
<head> 
    <link rel="stylesheet" href="../source_scripts/jquery-ui.css"> 
    <script src="../source_scripts/jquery-3.1.1.min.js"></script> 
    <script src="../source_scripts/jquery-ui-1.12.1/jquery-ui.min.js"></script> 

    <% 
    Set c = Server.createObject("adodb.connection"): c.Open "Driver=MySQL ODBC 3.51 Driver;Server=188.121.44.188;UID=admin;PWD=Password;Database=testingDB;Option=3" 
    Set r = Server.createObject("adodb.recordset"): r.activeConnection = c 
    r.Open "SELECT * FROM testTable" 
    do until r.eof 
     call addTags(r("Name"),r("Surname"),r("ID")) 
     r.movenext 
    loop 
    call autoSearch() 
    %> 

    <script language="javascript" runat="server"> 
    searchTags = new Array; 
    function addTags(a,b,c){ 
     searchTags.push(a + " " +b + " (" + c + ")"); 
    } 
    function autoSearch(){ 
     $(function(){ 
     $("#searchline").autocomplete({ 
      source: searchTags 
     }); 
     }); 
    } 
    </script> 
</head> 

<body> 
    <input id="searchline" type="text"> 
</body> 

</html> 
+0

のようにしてみてください別のファイルに存在するはずです –

+0

ええ、それは隠れたiframeなどを意味します。私はここで、1つの変数で親フレームに渡さなければならないたくさんのデータを扱っているので、避けたいと思います。 –

+1

サーバー側について覚えておくべきことは、スクリプトがサーバー上で実行されるということです。この結果、ページをリロードせずに再度実行することはできません。あなたがやろうとしているのは、読み込んだページの後ろにクライアント側のスクリプトが必要なものを変更することです。私はこれに最もエレガントな解決策にはAJAXが関係していると思われますので、タグ – John

答えて

0

はたぶん私が使用していますサーバー側のスクリプトは、あなたが入力している単語の完成を検索することをかなり確信しているこの

<!DOCTYPE html> 
<html> 
    <head> 
     <link rel="stylesheet" href="../source_scripts/jquery-ui.css"> 
     <script src="../source_scripts/jquery-3.1.1.min.js"></script> 
     <script src="../source_scripts/jquery-ui-1.12.1/jquery-ui.min.js"></script> 
     <script> 
     <% 
     Set c = Server.createObject("adodb.connection"): c.Open "Driver=MySQL ODBC 3.51 Driver;Server=188.121.44.188;UID=admin;PWD=Password;Database=testingDB;Option=3" 
     Set r = Server.createObject("adodb.recordset"): r.activeConnection = c 
     r.Open "SELECT * FROM testTable" 
     Response.Write("var searchTags = new Array;" & vbcrlf) 
     do until r.eof 
      Response.Write("searchTags.push('" & r("Name") & " " & r("Surname") & " (" & r("ID") & ")" & "');" & vbcrlf) 
      r.movenext 
     loop 
     %> 
     </script> 

    </head> 

    <body> 
     <input id="searchline" type="text"> 
     <script type="text/javascript"> 
      $(function(){ 
       $("#searchline").autocomplete({ 
        source: searchTags 
       }); 
      }); 
     </script> 
    </body> 

</html> 
+0

を追加しました。ありがとうございます。何か類似していますが、HTMLページには、ビューのソースページに「searchTags.push」という行がありますが、これは避けたいものです。 iframeでこれを行うことについて考えましたが、これは親ドキュメントにデータを渡す必要があることを意味します。今私はそれについて考えている、テキスト行がユーザー側のhtmlにあるので、$( "#searchline")という用語はうまくいかないだろう。$( "#searchline" window.parent.document)しかし、それは別の問題です。 –

+0

うん。たぶん多くのデータがあれば、これは最善の解決策ではありません。たぶんこのようなものを試すことができます:https://jqueryui.com/autocomplete/#remote? –

関連する問題