Php onClick侦听器不调用JavaScript

Php 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

我设置了一个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.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",

问题应该是独立的,不依赖于外部网站来理解,请在问题中提供答案。你的问题是在PHP
newvalue
什么都不是,应该是
echo$newvalue
。请测试您的代码并检查错误。顺便说一下。HTML 5验证程序发现W3C主机至少有一个重大错误。@putvande:
newvalue
将发出通知(未定义的T_常量),PHP将假定您打算引用该标记,并将其用作字符串:
'newvalue'
您说的“无法识别点击”是什么意思?Javascript没有运行,还是PHP没有被调用?