7

ASP Classic を使用している場合、REST スタイルのアプリケーション プログラミング インターフェイス (API) を構築して、入力を受け入れて JSON で出力を返したり、コンテンツ ネゴシエーションを行って JSON や XML などの形式で応答を配信したりすることはできますか?

例として、ASP-Classic は、GET 要求を送信し、JSON 応答を期待する jQuery オートコンプリート ウィジェットのバッキングとして使用できますか?

どのように?

4

3 に答える 3

10

もちろん?

まず、Javascript で ASP-class をプログラミングできます。つまり、多くの Javascript 拡張ライブラリを利用できるということです。特に、REST アプリを作成する場合は、json2.jsを使用することをお勧めします。

これは、ASP クラシックを使用し、パラメーター化されたクエリを使用して SQLExpress データベースにクエリを実行し、エンコードに json2.js を使用して、JSON エンコードされた配列を返す REST プログラムです。

<%@ language="Javascript" %>

<script language="javascript" runat="server" src='json2.js'></script>
<script language="javascript" runat="server">

if (typeof String.prototype.trim != 'function') {
    String.prototype.trim = function() {
        return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
    };
}

(function() {

    // http://msdn.microsoft.com/en-us/library/windows/desktop/ms675318(v=vs.85).aspx
    // http://msdn.microsoft.com/en-us/library/windows/desktop/ms678273(v=vs.85).aspx
    // http://msdn.microsoft.com/en-us/library/windows/desktop/ms675946(v=vs.85).aspx
    ado = {
        // data types
        variant          : 12,
        char             : 129,
        varChar          : 200,
        single           : 4,   // DBTYPE_R4
        date             : 133, // DBTYPE_DBDATE
        time             : 134, // DBTYPE_DBTIME

        // parameter directions
        input            : 1,
        output           : 2,
        inputOutput      : 3,
        returnVal        : 4,
        directionUnknown : 0,

        // command types
        cmdUnspecified   : -1,
        cmdText          : 1,
        cmdTable         : 2,
        cmdStoredProc    : 4,
        cmdUnknown       : 8,
        cmdFile          : 256,
        cmdTableDirect   : 512
    };

    queryDb = function(like) {
        var rs, result = [], cmd, query, param,
            conn = new ActiveXObject("ADODB.Connection");

        conn.ConnectionString =
            'Provider=SQLOLEDB.1;' +
            'Integrated Security=SSPI;' +
            'Persist Security Info=False;' +
            'Initial Catalog=AVWKS2008LT;' +
            'Data Source=.\\SQLEXPRESS';

        conn.Open();
        cmd = new ActiveXObject("ADODB.Command");
        cmd.ActiveConnection = conn;
        cmd.CommandType = ado.cmdText;
        query = 'SELECT distinct Lastname as lname ' +
            'FROM SalesLT.Customer ';
        if (like !== null) {
            query += 'WHERE LastName like ? ';
            like += '%';
            param = cmd.CreateParameter("", ado.varChar, ado.input, like.length, like);
            cmd.Parameters.Append(param);
        }
        query += 'ORDER BY lname ';
        cmd.CommandText = query;

        rs = cmd.Execute(); // typeof ADODB.Recordset
        while(!rs.EOF) {
            // retrieve the 0th field
            result.push(rs.Fields(0).Value.trim());
            rs.MoveNext();
        }
        conn.Close();
        return result;
    };

}());


try {
    // jquery UI autocomplete requires the search term to be 'term'
    var t = Request.QueryString('term') + '',
        token = (t == 'undefined') ? null:t,
        r = queryDb(token);
    Response.Write(JSON.stringify(r));
}
catch(e) {
    var error = {error: e.message};
    Response.Write(JSON.stringify(error));
}

</script>
于 2012-06-21T21:37:34.640 に答える
3

私のaspJSONクラスのようなものを使用することもできます: https://github.com/rcdmk/aspJSON

' instantiate the class
Dim oJSON = New JSON

' add properties
oJSON.Add "prop1", "someString"
oJSON.Add "prop2", 12.3
oJSON.Add "prop3", Array(1, 2, "three")

' get the JSON formatted output
Dim jsonSting
jsonString = oJSON.Serialize() ' this will contain the string representation of the JSON object
于 2015-05-15T20:08:28.440 に答える
0

ASP は、スクリプト エンジンを少し強化しただけです。コーディングできれば、それは可能です。Response.Writeまたはを介し​​て好きなように書くことができますResponse.BinaryWrite。したがって、答えはイエスでなければなりません。

JSON を実行する場合は、JScript サーバー側で作業する方がよいでしょう。その後、標準の JSON stringyfiers を使用して JSON 結果を生成できます。

于 2012-06-21T21:39:00.070 に答える