繁体   English   中英

如何使用ajax / jquery从wordpress html页面上的javascript调用php

[英]how to use ajax/jquery to call php from javascript on a wordpress html page

我已经编写了一些PHP,可以成功地从JSON GET请求中提取值(通过带有外部密钥“ teledu Pino”的API密钥通过URL)。

如何从WordPress页面(通过按钮或每隔x秒自动刷新一次)刷新该数字(而不刷新整个页面)? 因为提取变量需要PHP,所以在页面加载后,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获取请求响应的格式如下:

{“状态”:403,“消息”:“密钥离线或无效。”,“响应”:[]}

在线时,它的末尾有一个数字值(我在初始页面加载时已成功用PHP代码提取了该值)。 我只是不知道如何从javascript调用PHP。 我可以获取显示在网页上的数字的唯一方法是安装“在页面和帖子上允许php”插件,然后在页面上编写PHP代码。 但是,当然,我需要一种使用javascript / ajax刷新该数字的方法。

发送获取请求的网址类似于: http ://us01.proxy.teleduino.org/api/1.0/328.php?k= {MY_API_KEY_HERE}&r = getAnalogInput&pin = 16(pin = 16是微型设备上的引脚-具有电压测量值的控制器)。

任何想法或帮助都将不胜感激-谢谢!!! :)

jQuery.ajax({
    url: 'url_to_php_script.php?key=' + key,
    type: "GET",
    dataType: "json",
    success: function(data) {
        // In here you can manipulate the json data
        // if you wanted to update a label you could
        // give it an id and do something like this:
        jQuery('#id').val(data[0].identifier)
    }
});

在php脚本中,您将执行已经使用该键进行的任何逻辑操作。

$key = $_GET['key'];
// Logic and create array '$result'
$jSonData = json_encode($result);
header('Content-Type: application/json');
echo $jSonData;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM