Javascript PHP Ajax按钮按下难题
我一直试图让一个按钮在页面上执行一个PHP脚本并刷新一个div标记,但没有成功。当我删除脚本中的$ajax部分时,我的按钮会改变状态,但当我再次添加ajax部分时,什么也不会发生 我需要从PHP文件加载一些内容,然后更改按钮和div标记的状态。由于我似乎找不到问题,我将非常感谢您的帮助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() {
<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很高兴听到您的问题已经解决。如果我的答案解决了你的问题,你可以接受它,将你的问题标记为已解决。