如何将 PHP 数组返回到调用它的 JavaScript 函数
How can I return a PHP array to the javascript function that called it
..打算以另一种方式尝试..
指向另一个页面的链接对我来说不是很有用。.我已经看过其中的大多数,但无法使它们适应我需要的东西。
我不熟悉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名称,并将它们带回javascript"var",我可以在html文件中的其他地方使用。
谢谢丹尼斯
编辑.. 编辑删除.. 想通了..
我最初会使用 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] );
}
});
}
在 PHP 中,在格式良好的 PHP 数组上使用 json_encode
(只需推送到array()
,而不是直接回显 url 和逗号等)。
最后,print json_encode( $yourArray )
.
Vanilla Javascript的更新:
与其在这里复制(广泛的)javascript,不如通过@Richard H链接到一个不错的SO答案。 希望对您有所帮助,如果您不考虑使用 jQuery!
json_encode($array);
是要走的路。json_encode
函数编写一个JSON对象,以便将其传递给Javascript。
然后在 Javascript 中,您可以安装(如果您尚未使用它)jQuery 并使用 jQuery.parseJSON() 解析 JSON 字符串,该字符串返回一个可供使用的 JavaScript 对象。
为了补充已经发布的答案,这里有两个问题:
- 您的响应不是 JSON,而是 JSONP - 请务必以这种方式对待它。JSON看起来像这样:
{ ... }
,模仿JSON的数据结构,旨在被解析;JSONP有一个围绕它的函数调用,并打算执行:callback({ ... })
。 - AJAX 代表异步 JavaScript 和 XML。并非首字母缩略词的所有部分仍然相关,但异步性非常大。这意味着您无法在请求 AJAX 调用的同一函数中获取 AJAX 调用的结果:您需要设置一个回调,该函数将在结果到达时接收结果。
- 我需要从php调用javascript或jquery
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 使用html表单中的参数调用JavaScript函数
- 可以´t调用JavaScript中的函数
- 在按钮上调用Javascript函数
- 如何从Objective-C代码中调用javascript代码
- 当库在页脚中加载时,基于PHP条件调用Javascript
- 可以't在Jasmine中调用Javascript函数
- 在page_load事件上调用javascript函数
- 如何在ajax中调用javascript对象的方法
- 如何使用WPF调用JavaScript对象的函数
- 我们可以用参数对象集合而不是原始数据来调用JavaScript collection.reduce()方法吗
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 从附加文本调用javascript(订单车)
- 在线程循环中调用JavaScript
- 在指定时间后多次调用Javascript中的函数
- 未调用Javascript onscroll事件
- 如何正确调用Javascript中的匿名函数
- 从字符串调用javascript函数
- 无法从活动调用 javascript 函数