Javascript PHP Ajax按钮按下难题

Javascript PHP Ajax按钮按下难题,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我一直试图让一个按钮在页面上执行一个PHP脚本并刷新一个div标记,但没有成功。当我删除脚本中的$ajax部分时,我的按钮会改变状态,但当我再次添加ajax部分时,什么也不会发生 我需要从PHP文件加载一些内容,然后更改按钮和div标记的状态。由于我似乎找不到问题,我将非常感谢您的帮助 <div id="noah-content"> <script> $(document).ready(function() {

我一直试图让一个按钮在页面上执行一个PHP脚本并刷新一个div标记,但没有成功。当我删除脚本中的$ajax部分时,我的按钮会改变状态,但当我再次添加ajax部分时,什么也不会发生

我需要从PHP文件加载一些内容,然后更改按钮和div标记的状态。由于我似乎找不到问题,我将非常感谢您的帮助

<div id="noah-content">                       
<script>
    $(document).ready(function() {  
        $("#ON'.$id.'").click(function() {
            document.getElementById("ON'.$id.'").disabled = true; 
            document.getElementById("OFF'.$id.'").disabled = false;     

            $.ajax({
                type: "POST",
                url: "some.php",
                data: {
                    param: $(this).attr("src");
                }
            }).done(function( msg ) {
                alert( "Data Saved: " + msg );
            });
        });

        $("#OFF'.$id.'").click(function() {
            document.getElementById("ON'.$id.'").disabled = false; 
            document.getElementById("OFF'.$id.'").disabled = true;  
        });
    }); 
</script>   

<img src="images/about.png" alt="image" id="myimg" />
<input type="submit" class="ON" id = "ON'.$id.'" value=" ON " name="submit"/>
<input type="submit" class="OFF" id = "OFF'.$id.'" value=" OFF " name="submit" disabled="disable"/>
</div>

$(文档).ready(函数(){
$(“#在“$id.”上)。单击(函数(){
document.getElementById(“在“$id.”上”)。disabled=true;
document.getElementById(“OFF.$id.”)。disabled=false;
$.ajax({
类型:“POST”,
url:“some.php”,
数据:{
参数:$(this.attr(“src”);
}
}).done(函数(msg){
警报(“保存的数据:“+msg”);
});
});
$(“#关闭“$id.”)。单击(函数(){
document.getElementById(“在“$id.”上”)。disabled=false;
document.getElementById(“OFF.$id.”)。disabled=true;
});
}); 

首先,html标记的ID以及在js中引用它们的方式似乎很奇怪(尽管在作为字符串放入js或html时仍然有效)。看起来您试图在html和js中以不正确的方式引用php值

第二,您的javascript控制台是否有任何错误?ajax查询是否完成(即,您是否收到警报消息)?检查你的JS控制台,因为这会告诉你比“什么都没发生”更重要的事情

我通常使用ajax的success选项,而不是done方法。个人选择

$(this.attr(“src”);之后还有语法错误。分号通常表示代码行的结尾,您可以将其放在数据的数组/对象声明中的元素之后

 $.ajax({
                type: "POST",
                url: "some.php",
                data: {
                    param: $(this).attr("src")  //Removed the semicolon that was here
                },
                success: function(data){alert(msg)}
            });

让我们从评估php开始:

要运行php,必须打开php标记:

 $("#ON<?php echo $id ?>")...
$(“#ON”)。。。
将其替换到您希望id显示的任何位置。要进行调试,请在浏览器中打开页面源代码并查看生成的内容:

例如:

<input type="submit" class="ON" id="ON<?php echo $id ?>" value="ON" name="submit"/>

PHP=ServerSide,JavaScript=ClientSide。也就是说,您希望
“#OFF'.$id.”“
的输出是什么?OFF将使用不同的值执行sames脚本。这最终用于在1和0之间更改数据库中的值定义“不发生任何事情”。这里似乎有一些服务器端代码与客户端代码混合在一起。这些是实际呈现的
id
值吗?如果没有,请显示实际的。浏览器控制台中是否有JavaScript错误?事件处理程序正在执行吗?是否正在发出AJAX请求?服务器的响应是什么?您至少需要进行一些调试。假设您正在使用firefox进行测试,您希望进入firebug并从打开控制台开始。如果在单击该按钮时没有看到返回服务器的请求,则说明存在问题。这里可能有很多错误,首先是大家已经指出的javascript中的$id。那是什么?如果这是一个PHP变量,那么这段代码是在PHP脚本中进行插值的吗?我有一个循环,它创建了这个div标签的多个版本,因此$id可以分别标识每个按钮。这两个动作将按钮从on切换到off,反之亦然。问题是,一旦我添加了ajax部分,如果我按下on按钮,就会从console中得到一个mesasge,在属性列表attr(“src”);}之后显示SyntaxError:missing}@Griffin删除
$(this.attr(“src”)末尾的分号我也更新了我的答案,指出了这个语法错误,谢谢你给我指引了正确的方向。脚本的ajax部分出错,我使用控制台调试了它。@Griffin很高兴听到您的问题已经解决。如果我的答案解决了你的问题,你可以接受它,将你的问题标记为已解决。