Php onClick侦听器不调用JavaScript
我设置了一个onClick监听器来触发一个AJAX调用,而AJAX调用又会触发一个PHP脚本。但是,它似乎无法识别单击。有什么想法吗 Index.htmlPhp onClick侦听器不调用JavaScript,php,html,ajax,Php,Html,Ajax,我设置了一个onClick监听器来触发一个AJAX调用,而AJAX调用又会触发一个PHP脚本。但是,它似乎无法识别单击。有什么想法吗 Index.html <html> <head> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script> function doThings(){ document.wr
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
function doThings(){
document.write("Test");
$.ajax( {
type: "GET",
url: "script.php",
success:function(data){
if(data==0)
$("#imgId").attr("src","lightbulb_0.png");
else
$("#imgId").attr("src","lightbulb_1.png");
}
});
}
</script>
</head>
<body>
<img id="imgId" src="lightbulb_0" onClick='doThings();'/>
</body>
</html>
函数doThings(){
文件。编写(“测试”);
$.ajax({
键入:“获取”,
url:“script.php”,
成功:功能(数据){
如果(数据==0)
$(“#imgId”).attr(“src”、“lightbulb_0.png”);
其他的
$(“imgId”).attr(“src”、“lightbulb_1.png”);
}
});
}
Script.php
<?php
function toggle()
{
$filename = "brightness";
$otherDirectory="/sys/class/leds/led0/";
$f = fopen($otherDirectory . $filename,"r");
$value = fgets($f);
$newvalue = 1;
fclose($f);
if ((int)$value == 1) {
$newvalue = 0;
}
if ((int)$value == 0) {
$newvalue = 1;
}
$f = fopen($otherDirectory . $filename,"w+");
fwrite($f, $newvalue);
fclose($f);
echo $newvalue;
}
toggle();
?>
编辑:在此处添加代码,并使用下面的修复程序。现在onClick()可以工作了,但是在将图像设置为Lightbull_1之后,它不会变为0
EDIT2:使用下面所有解决方案的组合进行修复。非常感谢 为包含js
文件和code
添加单独的
标记。使用下面的代码
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
function doThings(){
//Your function code
}
</script>
//Html codes
<img id="imgId" src="lightbulb_0" onClick='doThings();'/>
函数doThings(){
//你的函数代码
}
//Html代码
您的HTML/JS很好(通过您所做的编辑),是您的PHP有错误。
您有echo newvalue
,它应该是echo$newvalue
:
<? php
function toggle() {
$filename = "brightness";
$otherDirectory = "/sys/class/leds/led0/";
$f = fopen($otherDirectory.$filename, "r");
$value = fgets($f);
$newvalue = 1;
fclose($f);
if ((int) $value == 1) {
$newvalue = 0;
}
if ((int) $value == 0) {
$newvalue = 1;
}
$f = fopen($otherDirectory.$filename, "w+");
fwrite($f, $newvalue);
fclose($f);
echo $newvalue;
}
toggle();
?>
如果这不起作用,请查看您的文件
是否存在(没有扩展名?),目录路径是否正确。在ajax调用中,xud包含php脚本返回的“数据类型”,例如,如果重新使用上面的json,请记住对其进行json编码
type: "GET",
dataType: "json",
url: "script.php",
如果html
type: "GET",
dataType: "html",
url: "script.php",
问题应该是独立的,不依赖于外部网站来理解,请在问题中提供答案。你的问题是在PHPnewvalue
什么都不是,应该是echo$newvalue
。请测试您的代码并检查错误。顺便说一下。HTML 5验证程序发现W3C主机至少有一个重大错误。@putvande:newvalue
将发出通知(未定义的T_常量),PHP将假定您打算引用该标记,并将其用作字符串:'newvalue'
您说的“无法识别点击”是什么意思?Javascript没有运行,还是PHP没有被调用?