2011-06-22 29 views
3

私は次のようになり、サーバのURLからJSONデータを抽出するために探しています:URLからJSONを抽出する方法は?

https://dev.randomdomain.com/subdomain 

URL自体がそのようなのようなデータ出力:

[ 
    { "name": "Not configured", 
    "mac_address": "####c##c####", 
    "online": "false", 
    "rate": "Not configured"}, 

    { "name": "Not configured", 
    "mac_address": "####c##c####", 
    "online": "false", 
    "rate": "Not configured"}, 
] 

outputedデータの変更をし、必要があります。それに応じて更新される。私は、URLからJSONデータを取得して更新するための最良の方法は何か疑問に思っていますか?私はjQueryのgetJSON関数を見てきましたが、URLが単にJSONを出力しているので、それが動作するかどうかはわかりません.jsonファイルではありません。

JavaScript、jQueryなどのオープンメソドロジを使用して説明したことはできますか?

ありがとうございました。

+0

このサーバーはリクエストしているのと同じドメインにありますか?そうでなければ、 '$ .getJSON'は[jsonp](http://api.jquery.com/jQuery.getJSON/#jsonp)を使わなければ動作しません。 – scurker

答えて

0

$.getJSON()を試したことがありますか?それはあなたが必要とするものを正確に行います。単にサーバからの応答を読み込んでjsonオブジェクトを返します。

+0

私は持っています。Iセットアップなどのようなテスト機能:$ .getJSON( "https://dev.ethermetrics.net/ForTedOttey"、機能(データ){ \t \t \t \t \t //ここでデータ \t \t \t \tで何かを行います\t警告( "アラートが働く?"); \t \t \t \t \t \t \t \t \t}); ---しかし、私は警告を表示することができません – Ted

+0

あなたは、URLの後にセミコロンは必要ありません: '$ .getJSON(" dev.ethermetrics.net/ForTedOttey "、function(data){ また、FirebugやChromeのデベロッパーツールなどを介して投稿をチェックする必要があるため、何らかの理由で(json、bad urlが無効な)失敗する可能性があります。 – scurker

0

まず、実際には応答からJSONを解析しようとしています。 urlはあなたが応答を要求するものです。オフライン処理のためにあなたが(ブラウザなど)、クライアント側でデータを処理する場合、それはあなたの質問から非常に明確ではありません

$.getJSON('https://dev.randomdomain.com/subdomain', function(data) { 
    var output = ""; 
    $.each(data, function(index, node) { 
     output += node.name + ": " + node.mac_address + "<br/>"; 
    }); 
    document.write(output); 
}); 

http://jsfiddle.net/YwPzW/1/

+0

何らかの理由で、実際にはどのgetJSON関数も機能しません。 URLで生成されたjsonをコピーして.jsonファイルを作成すると、完全に動作しますが、そのgetJSONはURLからJSONを解析していません。 URL自体はhttpsですが、http URLとしてアクセスしても出力されません。助言がありますか? – Ted

+0

問題は、サーバーがどのように応答しているかのようです。ブラウザのURLにアクセスすると、JSONデータが返されますか? –

+0

はい、私は参照してください:[リンク](0120)/ /dev.ethermetrics.net/ForTedOttey – Ted

0

またはサーバー側で:ここでgetJSONを使った簡単な例です。 。

サーバー側でこのデータにアクセスして処理するには、curl/libcurlを使用してデータを取り出し、選択した言語のオブジェクトにデコードします。 PHPでの例:

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://dev.randomdomain.com/subdomain"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch); 

data_as_php_object = json_decode($output); 
?> 
0

機能$.getJSON()はjavascriptオブジェクトにJSON形式で文字列を置くことです。したがって、データを取得する場合は、次のように試してみてください。

$.getJSON("https://dev.randomdomain.com/subdomain",function(data){ 
    alert(data[0].name); 
}); 
-1

JSON文字列のソースを信頼していますか?そうであれば、そのまま使用する

alert(eval(dropStringHere)); 

getJSON jQueryメソッドも正常に動作するはずです。

+0

一般的には、ネイティブ 'JSON.parse'を代わりに使用することをお勧めします。これは、JSONが安全にフォーマットされていることを検証するためです。 – scurker

+0

@scurkerすべてのブラウザにネイティブJSONパーサーがあるわけではありません。 – Emil

1
$,getJSON('url',function(data){ 
    alert(data); 
    // or alert("sample text"); would do if the json file is handled well enough. 
    // if no alert is shown, it's either you're using chrome with an offline version of 
    // your project or you're having an invalid json file 
}); 

私はあなたがどのようなブラウザを使用していることを聞いてもいいですか? $.getJSONは、オフラインモードで実行している場合はChromeで動作しません。

Chromeを使用していない場合でもjsonファイルが処理されない理由がわかりました。私はFFまたはIEを使用します。

jsonファイル内にコメントを挿入しないでください。無効にすると、 .getJSONはJSONファイル内のデータをJavaScriptファイルではなくテキストとして解析するので、コメントがあればそれを実行します(もしあれば)。それはわからないので確かにあなたにお勧めしますjsonファイル内のコメントブロックを削除します。

関連する問題