0

特定の URL にアクセスすると、ブラウザーで次の出力を生成する MVC アプリケーションがあります。

[{"name":"Victoria Day","date":"\/Date(1337583600000)\/"},{"name":"Canada Day","date":"\/Date(1341212400000)\/"},{"name":"Civic Holiday","date":"\/Date(1344236400000)\/"},{"name":"Labour Day","date":"\/Date(1346655600000)\/"},{"name":"Thanksgiving","date":"\/Date(1349679600000)\/"},{"name":"Remembrence Day","date":"\/Date(1352707200000)\/"},{"name":"Christmas","date":"\/Date(1356422400000)\/"},{"name":"Boxing Day","date":"\/Date(1356508800000)\/"}]

もちろん、ソース コードには、その周りにラップされた多数の html タグがあります。

この生の情報を Javascript 配列に割り当てるにはどうすればよいですか?

4

3 に答える 3

1

jQueryを取得し、jQuery.getJSONを使用します。たとえば...

于 2012-05-09T20:25:37.193 に答える
1

http リクエストが投稿した生データを返すことを考慮すると、次を使用できるはずです。

var text = $.trim($(document.body).text());
var cleanedText = text.replace(/\\\/Date\(/g,"").replace(/\)\\\//g,"");
var holidays = $.parseJSON(cleanedText); // This is your array!

alert("Loaded " + holidays.length + " holidays. Fifth one is " + holidays[4].name + " celebrated on " + new Date(parseInt(holidays[4].date)).toString());

// Output(the dates should be printed with your preferred timezone offset): 
// Loaded 8 holidays. Fifth one is Thanksgiving celebrated on Mon Oct 08 2012 10:00:00 
// GMT+0300 (GTB Daylight Time)

解析したい出力が別の場所にある場合はtext、カスタム セレクターを使用して jQuery 経由で var にロードする必要があります。varcleanedTextは、有効な javascript Date オブジェクトとして解析するために、日付値から不正な文字を削除することに注意してください。

さらに質問がある場合は、コメントを残してください。幸運を!

JSFiddle の動作例:ここをクリック

編集: jQueryが必要です。

Edit2:$.getカスタム URL からデータを取得するために使用する必要があると思います(同じサーバーからのものであることを確認してください。そうしないと、ブラウザーのセキュリティの問題が発生する可能性があります)。これで少し遊んで、リクエストがサーバー上の正しいパスに到達するかどうかを確認してください (たとえば、[ネットワーク] タブの [すべてのリクエスト データ] の [開発者ツール] の下にある Google Chome ブラウザーで確認できます)。ニーズに合わせての内容を変更する必要がありfunction(data) {ます。

var url = 'page.html'; // You should change this with the url that returns your data.
$.get(url, function(data) {
  alert('The response is: ' + data); // Make sure it's ok
  var text = $.trim(data);
  var cleanedText = text.replace(/\\\/Date\(/g,"").replace(/\)\\\//g,"");
  var holidays = $.parseJSON(cleanedText); // This is your array!

  alert("Loaded " + holidays.length + " holidays. Fifth one is " + holidays[4].name + "           celebrated on " + new Date(parseInt(holidays[4].date)).toString());
});
于 2012-05-09T21:07:25.413 に答える
1

それはJSONと呼ばれます。json2.jsのような外部ライブラリを使用して解析するか、古いブラウザーを気にしない場合はネイティブ バージョンを使用して、

var myData = JSON.parse('..data');
于 2012-05-09T20:34:46.417 に答える