0

..これを別の方法で試してみます..

別のページへのリンクは私にはあまり役に立ちません.. 私はそれらのほとんどを見てきましたが、必要なものにそれらを適応させることができませんでした.

私は ajax や jQuery に詳しくありません。

この特定の質問に関して機能するコードの詳細な例について、私は実際にいくつかの助けを借りることができました. 前もって感謝します..

JSON_generator.php というコードがあります。

<?php
require_once 'EasyWebFetch.php';

$callback = isset($_GET['callback']) ? $_GET['callback'] : 'mymap.weatherhandler';
$station = isset($_GET['rid']) ? $_GET['rid'] : 'FWS';
$product = isset($_GET['product']) ? $_GET['product'] : 'NCR';
$nframes =  isset($_GET['frames']) ? $_GET['frames'] : 10;

if (strlen($product) != 3 || strlen($station) != 3) { exit; }

// fetch directory listing
$wf = new EasyWebFetch;
if (!$wf->get("http://radar.weather.gov/ridge/RadarImg/$product/$station/")) {
  print $wf->getErrorMessage();
  exit;
}
$page = $wf->getContents();
// echo $page."\n\n";

$size = preg_match_all( "/href=\"({$station}[\d_]+{$product}\.gif)\"/" , $page, $match);
$files = $match[1];

$nframes = min(count($files), $nframes);
$files = array_slice($files, -$nframes);

echo $callback."\n(\n{\ndirectory:\n[\n";
for ($i=0; $i < $nframes; $i++) {
  echo "\"ridge/RadarImg/$product/$station/$files[$i]\",\n";

}
echo "]\n}\n)\n;"

?>

このようにコマンドラインから呼び出すと...

http://example.com/mypath/JSON_generator.php?&?callback=CallBack&product=NCR&rid=JAX&frames=5

しかし、私が本当に必要としているのは、これらの .gif パス/ファイル/名前を、最初に php を呼び出した JavaScript 関数から「利用可能」にすることです。** それらは、配列内のアイテムとしてアクセスできる必要があります。

それを行うためのJavaScript関数呼び出しがわかりません..

..このようなものですが、明らかにこれではありません..

function Feed (whichproduct, whichsite) {
 var filelist = [];
 var siteimages = filelist("http://example.com/mypath/JSON_generator.php?&product=whichproduct&rid=whichsite&frames=5");
..then..
//alert (filelist [1]); .. should return something like  "ridge/RadarImg/NCR/JAX/JAX_20130128_2354_NCR.gif"
}

明らかに、私は初心者なので、完全な回答は単なるコード スニペットよりもはるかに価値があります..

結論:

これらの .gif 名のそれぞれを php スクリプトから取得し、それらを html ファイルの他の場所で使用できる javascript "var" に戻すことができる JavaScript 関数が必要です。

ありがとう、デニス

編集..編集削除..それを理解した..

4

3 に答える 3

2

最初はjQueryを使用して回答します。これにより作業が非常に簡単になりますが、バニラの Javascript 実装ですぐに更新します。

Feed関数で、jQuery の便利$.ajaxなメソッドを使用して AJAX 呼び出しを行います。

function Feed (whichproduct, whichsite) {
    $.ajax({
        "url": "http://mysite.com/mypath/JSON_generator.php?&product=whichproduct&rid=whichsite&frames=5"
        "type": "GET",
        "dataType": "json",
        "success": function( data, status, xhr ){
            alert( data[1] );
        }
    });
}

json_encodePHP では、整形式の PHP 配列で使用します( array()URL やカンマなどを直接エコーするのではなく、単にプッシュするだけです)。

最後に、print json_encode( $yourArray ).

バニラ Javascript の更新:

ここに(広範な)javascriptをコピーするのではなく、@ Richard Hによる素敵なSO回答にリンクします。jQuery の使用を検討していない場合に役立つことを願っています。

于 2013-01-29T02:43:15.407 に答える
0

すでに投稿された回答を補足するために、ここには 2 つの問題があります。

  • あなたの応答は JSON ではなく、JSONP です。必ずそのように扱ってください。JSON は次のよう{ ... }になります。JSON のデータ構造を模倣しており、解析することを目的としています。JSONP には関数呼び出しがラップされており、実行されることを意図しています: callback({ ... }).
  • AJAX は Asynchronous JavaScript and XML の略です。頭字語のすべての部分がまだ関連しているわけではありませんが、非同期性はかなり大きいです。これは、AJAX 呼び出しの結果を、要求した同じ関数で取得できないことを意味します。結果が到着したときに結果を受け取る関数であるコールバックを設定する必要があります。
于 2013-01-29T03:06:08.133 に答える
0

json_encode($array);行く方法です。このjson_encode関数は、Javascript に渡すための JSON オブジェクトを作成します。

次に、Javascript で jQuery をインストールし (まだ使用していない場合)、JSON 文字列をjQuery.parseJSON()で解析すると、すぐに使用できる JavaScript オブジェクトが返されます。

于 2013-01-29T02:39:55.143 に答える