在我的wordpress页面中直接使用嵌入javascript的ajax(和jquery)从远程服务器php文件获取一个简单的JSONP对象

在我的wordpress页面中直接使用嵌入javascript的ajax(和jquery)从远程服务器php文件获取一个简单的JSONP对象,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我在静态wordpress页面上编写了一些php(使用在页面和帖子中包含php插件),从远程服务器获取JSON对象。当然,这只在页面加载时工作一次,然后再也不会工作(因为它不是ajax) 但由于调用是通过自己的php和API url调用发送到服务器的,因此我确信不需要我的php,必须有一点简单的ajax(可能使用jquery),我可以直接在html wordpress页面上编写,从远程服务器获取JSON对象,所有这些都是我直接在页面上使用的javascript (我想象它将使用JSONP格式,因

我在静态wordpress页面上编写了一些php(使用在页面和帖子中包含php插件),从远程服务器获取JSON对象。当然,这只在页面加载时工作一次,然后再也不会工作(因为它不是ajax)

但由于调用是通过自己的php和API url调用发送到服务器的,因此我确信不需要我的php,必须有一点简单的ajax(可能使用jquery),我可以直接在html wordpress页面上编写,从远程服务器获取JSON对象,所有这些都是我直接在页面上使用的javascript

(我想象它将使用JSONP格式,因为它来自远程服务器)-类似于:

$.get( "my_url.php_with_API-KEY_etc", data, success, "jsonp" );

如你所见,我有点迷路了。对于这个论坛来说,这是一个太“初学者”的问题吗?或者有人能帮忙吗

如果太初级,有什么教程建议吗?(我已经尝试了谷歌上出现的前3个页面中的所有内容)。我觉得这是一个很简单的要求,不应该这么难

php代码(当我通过“页面和帖子上包含的php”插件使用它时,它只适用于页面加载)是:


已经挣扎了很多天,阅读了数百个其他相关的答案,但似乎没有一个答案能够简单地解释我是如何使用ajax/jquery和js单独为wordpress实现这一点的。提前谢谢。

我会解决这个问题,创建一个短代码插件来处理这个特殊情况。像
在页面和帖子中包含php这样的插件所做的是一个短代码。而且,您所尝试的内容太复杂,无法与HTML内容放在一起(而且在WP visual/text editor中可能会发生各种代码损坏)

这里有一个完整的插件示例

  • 根据您的喜好重命名短代码,例如,
    add_短代码('teleduino',array($this,'shortcode'))

  • 您的实际PHP代码必须适应方法
    shortcode()
    get\u random\u posts()
    。这个
    get_random_posts()
    将是您的
    get_teleduino_response()
    ,专门负责获取响应并返回数据或错误消息。然后在
    shortcode()
    中处理结果并进行实际输出

  • 短代码还输出一个按钮,该按钮触发Ajax调用,该调用在
    query\u rand\u post()
    中再次执行
    get\u random\u posts()

  • 总之,您必须使这三种方法(类中的函数)适应您的逻辑

  • 我认为您可以删除
    ob\u start
    并使用
    wp\u send\u json\u success($results)将响应发送回jQuery,或对结果进行一些预处理,并仅返回相关信息

  • 也许你可以用卷发代替卷发


做得很好,询问构造良好的问题,如htis,对问题进行简明描述,采取研究步骤,并提供良好的代码。wordpress插件是您的理想选择,它充当AAJX输出控制器,因此您可以通过wordpress框架调用它。您可以将CURL代码滑入其中。恐怕我在wordpress中已经帮不了你什么忙了……但是应该有人给你一些建议。我稍后会再次检查,这只是一个提示。你的PHP in-Posts插件所做的是一个插件,在我看来,你最好创建自己的插件。这让我们来到->快捷码+Ajax谢谢charlietfl和b_u的鼓励。所以我想找到或者制作一个插件是最好的方法。我正在搜索“充当AAJX输出控制器的wordpress插件”,但没有找到任何对我有意义的东西,我只是浏览一下你建议的插件代码,看看我是否能理解它,以便我可以根据我的需要定制它(如果你是这么建议的?)。再次感谢。关于这个问题的更多提示,或者关于如何找到/制作合适插件的资源,我们将不胜感激。我怀疑你是否能找到“合适的插件”,你必须自己动手。我已经发布了一个答案,希望能更清楚一点。谢谢,这太棒了。我已经做了一个简单的临时快速修复,让我在第二天左右摆脱麻烦,我只使用我的旧php文件,并从html页面用ajax调用它们。你的插件看起来真的很不错,这是我的下一步。我会仔细研究你的答案,并在我完成后让你知道答案是怎样的。再次感谢。
$.getJSONP("my_url.php_with_API-KEY_etc"
[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');
$results = curl_exec($curl_handle);
curl_close($curl_handle);
$data = json_decode($results, true);
$mess = $data['message'];
$stat = $data['status'];
$moisture = $data['response']['values'][0];
$time = $data['response']['time'];
[/php]