1

ServiceNow インスタンスを実行しており、JSON ライブラリを使用してすべてのユーザーを取得しようとしています。このデータをダンプする URL を入力すると、ユーザーの JSON リストを簡単に表示できます。この JSON リストを取得してユーザーのリストを作成する Web ページを作成しようとしています。クロスドメインの問題が発生し続けています。CORS を使用できないため、ユーザーの情報に従ってスクリプトを動的にロードしようとしています。これは、私が機能させようとしているコードです。

        function test() {
        var username = document.getElementById("username").value;
        var password = document.getElementById("password").value;
        var domain = document.getElementById("domain").value;
        var targeturl = "https://" + username + ":" + password + "@"
            + domain + "/sys_user_list.do?JSON&sysparm_action=getRecords";
        $.getScript(targeturl + "&callback=dumpData")
        function dumpData(data) {
            alert(data);
        }
    }

この時点で、スクリプトは正しく読み込まれているように見えますが、構文エラーが発生します。

キャッチされない SyntaxError: 予期しないトークン:

JSON データを取得するには、getScript 呼び出しをどのように行う必要がありますか? これは有効な方法でもありますか?この問題を理解しようとしているときに偶然出くわしました.それが私の唯一の選択肢のようです. YQL を試しましたが、うまくいきません。

編集:

$.ajax を利用するためにコードをやり直しました。コードは次のとおりです。

            $.ajax({
            url: 'https://' + username + ':' + password + "@" + domain + '/sys_user_list.do?JSON&sysparm_action=getRecords&callback=test',
            type: "GET",  
            success: function (data) {
                alert("hello");
            },
            crossDomain: true,
            dataType: "jsonp",
            jsonpCallback: 'test'
        });
        function test(data) {
            alert("It worked!");
        }

これに関連するすべての投稿を精査しましたが、まだこれを理解できません。この状況を改善する方法について誰かアドバイスはありますか? それでも無効な構文エラーが表示されます。このJSONデータを取得することはできませんか?

データを取得するために YQL も試しましたが、セキュリティの問題も発生します。

ありがとう、

クリス

4

2 に答える 2

1

CalgaryでJSON Web Services プラグインを使用した経験から、ServiceNow は JSONP をサポートせず、JSON のみをサポートします。

適切な形式を取得するには、スクリプト化されたカスタム Web サービスを構築する必要があるかもしれません。JSONP がダブリンに登場することもありません。

リンク例: https://<instance>.service-now.com/<table>.do?JSON&sysparm_action=getRecords&displayvalue=true

displayvalue=true参照フィールドの sys_id を人間に優しい代替手段に交換します。

データ構造にアクセスするには、次のように簡単です。

function callMe() {

  $.getJSON('url.json', function(myData) {

    for (n = 0; n < myData.records.length; n++) {
      console.log(myData.records[n].<column1> + '\n' +
                myData.records[n].<column2> + '\n' +
                myData.records[n].<column3> + '\n' +
                myData.records[n].<column4> + '\n\n'
               );
    }
  });
};

このリストを作成するには、CMS/jelly を使用する方がよい場合があります。

于 2014-03-17T19:57:01.893 に答える
0

クロスドメインを行う$.ajax({});代わりに試してみるべきかもしれません。$.getSrript();$.ajax({url: "your_url.php",dataType; "jsonp",success: function(data){ document.write(data);} });

于 2013-07-02T21:42:46.443 に答える