【发布时间】:2013-10-25 18:26:02
【问题描述】:
我编写了一些 PHP,它成功地从 JSON GET 请求中提取了一个值(通过一个名为“teledu Pino”的外部服务,通过带有 API 密钥的 URL)。
如何从我的 WordPress 页面刷新该数字(通过按钮或每 x 秒自动等)(不刷新整个页面)?因为提取变量需要 PHP,一旦页面加载,它就不再活动。所以我需要使用ajax(最好使用jquery)从javascript调用PHP。我明白了。但是在尝试了这个站点和其他站点的相关解决方案很多天之后,我仍然不知道如何正确获取代码,以及需要单独的文件以及将它们准确放在哪里。由于我使用的是 WordPress,也许我需要编写一个插件?必须有一种简单的方法来使用 ajax。
这是我所知道的: 我必须将 jquery 排入队列。 (因为 Wordpress 已经有 jquery)> wp_enqueue_script('jquery');
我必须用 javascript 编写一个对 PHP 的简单 ajax 调用(不知道我是否可以在我的 HTML 页面上执行此操作,或者它必须是一个单独的文件上传到模板文件夹(?)
PHP 文件看起来像这样:
ob_start();
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://us01.proxy.teleduino.org/api/1.0/328.php?k={MY_API_KEY_HERE}&r=getAnalogInput&pin=14');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name');
$Aresults = curl_exec($curl_handle);
curl_close($curl_handle);
$Adata = json_decode($Aresults, true);
$Amess = $Adata['message'];
$Astat = $Adata['status'];
$Amoisture = $Adata['response']['values'][0];
$Atime = $Adata['response']['time'];
echo $Amoisture;
echo " : ";
echo $Astat;
echo " : ";
echo $Amess;
if ($Amess == "Key is offline or invalid.") {
echo "[div class=\"cooo\"] Spike is sleeping [/div]";
}
等等。等等
这个 PHP 文件需要用唯一的名称保存,然后 ajax 才能调用它,但我似乎无法正确处理。
来自“teleduino”的 JSON 获取请求响应格式如下:
{"status":403,"message":"密钥离线或无效。","response":[]}
当它在线时,它最后有一个数字值(我在初始页面加载时使用 PHP 代码成功提取)。我只是不知道如何从 javascript 中调用那个 PHP。我可以让网页上显示的数字的唯一方法是安装“允许在页面和帖子上使用 php”插件,然后在页面上编写 PHP 代码。但当然,我需要一种使用 javascript / ajax 刷新该数字的方法。
发送get请求的url是这样的:http://us01.proxy.teleduino.org/api/1.0/328.php?k={MY_API_KEY_HERE}&r=getAnalogInput&pin=16 (pin=16 是微控制器上进行电压测量的引脚)。
任何想法或帮助都将不胜感激 - 谢谢! :)
【问题讨论】:
-
恕我直言,您添加的信息并不真正相关。问题是“在执行某些 Ajax 的 WP 页面中添加一个按钮”,不是吗? ATM,请求和响应不是真正的问题。 . . .您可以使用简码解决此问题,检查this working example - 如果您稍等片刻,我将更新该答案并使用它制作一个插件(在主题中使用它不是一个好建议)。
-
谢谢 b_ 我完全同意,只是我尝试了所有我能找到的“在执行某些 Ajax 的 WP 页面中添加按钮”的方法,但没有任何效果让我想到另一个东西在某种程度上是相关的。我真的很期待看到(并从中学习)你更新的答案和你的插件,会很棒,谢谢..
-
它已经存在了,您可能需要更改简码输出并调整方法
query_rand_post以使用您的 curl 请求(我认为不需要ob_start。
标签: javascript php jquery ajax wordpress