我正在为我的PLC做一个小项目。 我使用PHP打开与PLC的连接。
我创建了一个小网站,使交互变得更容易。
我希望在此网站上包含一些切换,以便向设备发送不同的命令。
我希望在不重新加载网站的情况下完成此操作,因此我的研究结果是使用AJAX。
现在我已经尝试了使用普通按钮和切换的AJAX onclick事件的多个教程....但是他们都没有给我我想要的结果。
完成我需要的最简单方法是什么?
当按下按钮时,我需要执行这个PHP代码
$plc->WriteBit("E", 0, 0, 0, 1);
再次按下该按钮时,我需要执行此操作
$plc->WriteBit("E", 0, 0, 0, 0);
所有这一切都应该无需重新加载网站即可。
就像我说的,我真的不知道如何直接从AJAX解析这个PHP代码。我希望有人能把我推向正确的方向!
谢谢!
答案 0 :(得分:0)
首先,您必须在按钮点击时发送ajax请求。为此你可以使用jQuery。
<button type="button" onclick="callAjax();" value="My Button">My Button</button>
在callAjax()函数中,您可以向php页面发送ajax请求。
function callAjax(){ //your ajax call will come here }
你可以在这里查看jQuery ajax api https://api.jquery.com/jQuery.ajax/
在你的PHP页面中打印上述功能的响应。
echo ($anyFlag == 1)? $plc->WriteBit("E", 0, 0, 0, 1) : $plc->WriteBit("E", 0, 0, 0, 0);
在jQuery ajax调用的成功方法中,您可以检查响应并做出相应的反应。
答案 1 :(得分:0)
尝试这样的事情:
多个按钮/地址:
<input type='button' name='writeA' value='WRITE BIT A' data-bit='1' data-address='000' class='plc'>
<input type='button' name='writeB' value='WRITE BIT B' data-bit='0' data-address='001' class='plc'>
<div id='output'></div>
jQuery的:
$(document).on('click', 'input.plc', function() {
var bit = parseInt($(this).attr('data-bit'));
var address = $(this).attr('data-address');
$('#output').load('plc.php', {'bit':bit, 'address':address});
$(this).attr('data-bit', bit^1); // xor bit to toggle value
});
PHP脚本(plc.php):
$bit = isset($_POST["bit"]) ? $_POST["bit"] : 0;
$address = isset($_POST["address"]) ? $_POST["address"] : '000';
$lst_address = str_split($address);
$plc->WriteBit("E", $lst_address[0], $lst_address[1], $lst_address[2], $bit); // or use an 'if' or 'switch' statement
echo $bit;