1

「test.asp」というファイル内のこのかなり単純なコードの何が問題なのか誰かが教えてくれませんか?

<script src="jquery-1.2.6.js" type="text/javascript" language="javascript" runat="server"></script>
<script src="jquery.xml2json.js" type="text/javascript" language="javascript" runat="server"></script>

<%
var xml = '<xml><message>Hello world</message></xml>';
var json = $.xml2json(xml);
alert(json.message);
%>

表示されるエラー メッセージは Microsoft JScript ランタイム エラーです

「$」は未定義です

XMLObjectifier と xml2json.js を試しましたが、共通のテーマは、従来の ASP ファイル内でこれらの JavaScript ライブラリを実行できないように見えることです。

私の理解では、ASP が記述されている JScript は javascript です...サーバー側だけです。test.asp ファイル内で .js ファイルを実行/参照できますか?

どうもありがとうございました!ご覧のとおり、私の asp ファイルは xml を生成しますが、それを json に変換したいと考えています。

4

2 に答える 2

3

注意してください-この回答の優れた情報に従って、ブラウザでJScriptを使用できるという事実を無視していません: JavaScriptとJScriptの違いは何ですか? . この質問は明らかにサーバーのコンテキストでの JScript について話しているため、ここから「JScript」という用語は、ASP または Windows スクリプトで使用される JScript のバージョンを意味します。

2 つの言語は同等または類似している可能性がありますが (ただし、JScript は正確にはJavaScript ではないことに注意してください)、それらのランタイム環境は完全に異なる可能性があります。

使用しようとしているこれらのライブラリの JavaScript は、ブラウザーでの実行を想定したクライアント側のスクリプト言語です。ブラウザは、このコードの実行環境となり、HTML 仕様で定義されているオブジェクトとサービスを提供します (組み込みのwindowまたはdocumentオブジェクトなど)。

JScript は JavaScript に似た言語であり、この場合、サーバー (または Windows スクリプト環境) で実行されることを想定しています。つまり、ブラウザとはまったく異なるランタイム環境で実行されます。

この文脈では、クライアント JavaScript ライブラリをサーバーに含めるという考えは、丁寧に言うと間違っています。最も近いのは、 「純粋な」JavaScript であるNode.jsのようなサーバー プラットフォームです。しかし、それでも jQuery のようなクライアント ライブラリは実行できません。それらはブラウザによって提供されるランタイム環境に依存しているためです。はい、それは「偽造」および「スタブ化」することができます。しかし、実際の利益のためではありません。

これをやろうとするのをやめて、通常のクライアント側コードとして書き直してください。

于 2012-07-11T07:27:35.663 に答える
0

私は JScript を使用して、最新の React (ノード) プロジェクト、従来の従来の ASP プロジェクト、古い Web フォーム プロジェクトの間で相互運用を行いました。サーバー上で JScript を使用できる従来の ASP の機能は、非常に役立ちました。クラシック ASP、Web フォーム、およびノー​​ド (反応) プロジェクト間のすべての設定 (API、接続文字列、アプリ設定など) を一元化することができました。それらがすべて同じ設定を読み取ったら、個々の web.config 設定を削除しました

Babel には、コードを JScript に追加レベルでトランスパイルできるJScript トランスフォームがあります (私は ES2016 -> ES5 -> Classic ASP バンドルの JScript をトランスパイルしました)。

include/config.js (babel で生成された設定)

var config = {
    "cdnBaseUrl": "https://api.example.com",
    "apis": { ... },
    ...
}

include/Config.asp

' Import the global JSON object from crockford to parse JSON in VBScript server-side
<script language="JScript" runat="server" src="json2.js"></script>

' Import global config object that can be called from JScript and VBScript interchangeably
<script language="JScript" runat="server" src="config.js"></script>

<script language="JScript" runat="server">
  /** DEFINE GLOBAL FUNCTIONS THAT CAN INTEROP WITH VBSCRIPT HERE */

  function requireScript(path) {
      var resourceUrl = config.cdnBaseUrl + path
      return ('<sc' + 'ript src="' + resourceUrl + '"></sc' + 'ript>')
  }

  ....
</script>

include/AppHead.asp

<!-- Include the settings and global helpers -->
<!--#include virtual="/include/Config.asp"-->

<!-- Build script tags in head that point to the correct CDN base url -->
<%=requireScript("/assets/react-client.js")%>

すべての設定に対してアダプターを作成するのは大変なことでした (VBScript で XML / JSON を解析するのはひどいものです)。

于 2016-02-19T22:35:14.037 に答える