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"
}

显然,我是一个初学者,所以完整的答案对我来说比代码片段更有价值。

底线:

我需要一个 javascript 函数,它可以从 php 脚本中提取每个这些 .gif 名称,并将它们带回我可以在 html 文件的其他地方使用的 javascript“var”。

谢谢,丹尼斯

编辑..编辑删除..想通了..

4

3 回答 3

2

我将首先使用jQuery进行回答,因为这使事情变得非常简单,但我稍后会使用 vanilla 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] );
        }
    });
}

在您的 PHP 中,使用json_encode格式良好的 PHP 数组(只需推送到array()而不是直接回显 url 和逗号等)。

最后,print json_encode( $yourArray ).

Vanilla Javascript 更新:

我不会在这里复制(广泛的)javascript,而是链接到@Richard H 的一个不错的 SO 答案。如果您不打算使用 jQuery,希望对您有所帮助!

于 2013-01-29T02:43:15.407 回答
0

json_encode($array);是要走的路。该json_encode函数为您编写一个 JSON 对象以将其传递给 Javascript。

然后在 Javascript 中,您可以安装(如果您还没有使用它)jQuery 并使用jQuery.parseJSON()解析 JSON 字符串,该字符串返回一个可供使用的 javascript 对象。

于 2013-01-29T02:39:55.143 回答
0

为了补充已经发布的答案,这里有两个问题:

  • 您的响应不是 JSON,而是 JSONP - 请务必以这种方式对待它。JSON 看起来像这样:{ ... },模仿 JSON 的数据结构,并打算被解析;JSONP 有一个围绕它的函数调用,旨在执行:callback({ ... }).
  • AJAX 代表异步 JavaScript 和 XML。并非首字母缩写词的所有部分仍然相关,但异步性非常大。这意味着您无法在请求它的同一函数中获得 AJAX 调用的结果:您需要设置一个回调,该函数将在结果到达时接收结果。
于 2013-01-29T03:06:08.133 回答