jQuery get()php按钮提交

jQuery get()php按钮提交,php,jquery,ajax,Php,Jquery,Ajax,我有以下jquery代码 $(document).ready(function() { //Default Action $("#playerList").verticaltabs({speed: 500,slideShow: false,activeIndex: <?=$tab;?>}); $("#responsecontainer").load("testing.php?chat=1"); var refreshId = setInterval(function() { $(

我有以下jquery代码

$(document).ready(function() {
//Default Action
$("#playerList").verticaltabs({speed: 500,slideShow: false,activeIndex: <?=$tab;?>});
$("#responsecontainer").load("testing.php?chat=1");
var refreshId = setInterval(function() {
  $("#responsecontainer").load('testing.php?chat=1');
}, 9000);
$("#responsecontainer2").load("testing.php?console=1");
var refreshId = setInterval(function() {
  $("#responsecontainer2").load('testing.php?console=1');
}, 9000);

$('#chat_btn').click(function(event) { 
  event.preventDefault();
  var say = jQuery('input[name="say"]').val()
 if (say) { 
  jQuery.get('testing.php?action=chatsay', { say_input: say} );
  jQuery('input[name="say"]').attr('value','')
} else {
  alert('Please enter some text');
}
});

$('#console_btn').click(function(event) { 
event.preventDefault();
var sayc = jQuery('input[name="sayc"]').val()
if (sayc) { 
  jQuery.get('testing.php?action=consolesay', { sayc_input: sayc} );
  jQuery('input[name="sayc"]').attr('value','')
} else {
  alert('Please enter some text');
}
});


$('#kick_btn').click(function(event) { 
event.preventDefault();
var player_name = jQuery('input[name="player"]').val()
if (player_name) { 
  jQuery.get('testing.php?action=kick', { player_input: player_name} );
} else {
  alert('Please enter some text');
}
});


});
当我单击该按钮时,它会重新加载页面以供初学者使用,而且不应该这样做,它也不会处理我的处理程序代码。我已经把这件事弄得一团糟好几个小时了,我肯定这是件愚蠢的事

我试图做的是让一个按钮(0个可见表单字段)触发一个事件。如果我必须把它们放在一个单独的文件中,我可以,但为了简单起见,我把它们都放在同一个文件中。停止加载其余文件的die命令。我能忽略什么呢


我添加了更多的代码。。chat_btn和console_btn编码所有工作,设置相同(使用隐藏字段而不是文本字段)。我无法解释它不工作的原因:(

您的回调根本没有被调用,或者
if
条件导致错误。如果它到达
if
的任一分支,它将不会重新加载页面,因为这两个分支都以
event.prevntDefault()开头

如果在控制台中没有看到任何错误,则可能根本没有绑定回调。是否使用
jQuery(document).ready(…)
在DOM可用于操作后绑定事件处理程序

关于风格的一些注意事项:

  • 如果
    If
    的两个分支包含相同的代码,请将该代码移出
    If
    语句:
  • 对于表单元素,使用
    .val()
    而不是
    .attr('value')
  • 不要测试
    当您确实想要测试真实性时,只需测试值:


您的回调根本没有被调用,或者
if
条件导致错误。如果它到达
if
的任一分支,则不会重新加载页面,因为这两个分支都以
事件.prevntDefault()开始

如果在控制台中没有看到任何错误,则可能根本没有绑定回调。是否使用
jQuery(document).ready(…)
在DOM可用于操作后绑定事件处理程序

关于风格的一些注意事项:

  • 如果
    If
    的两个分支包含相同的代码,请将该代码移出
    If
    语句:
  • 对于表单元素,使用
    .val()
    而不是
    .attr('value')
  • 不要测试
    当您确实想要测试真实性时,只需测试值:


使用return false event.exe而不是preventDefault,并将其放在函数末尾


您可能应该在php中使用json_decode,因为您要将json传递给php脚本,这样它将是一个数组。

使用return false event.而不是prevent default,并将其放在函数末尾


您可能应该在php中使用json_decode,因为您将json传递给php脚本,这样它将是一个数组。

我解决了这个问题。我有一个while循环,显然,每个btn名称和输入字段名称必须是唯一的,即使它们都在自己的标记中

$("#playerList").delegate('[id^="kick_btn"]', "click", function(event) {
  // get the current player number from the id of the clicked button
  var num = this.id.replace("kick_btn", "");
  var player_name = jQuery('input[name="player' + num + '"]').val();
  jQuery.get('testing.php?action=kick', {
      player_input: player_name
  });
  jQuery('input[name="player"]').attr('value','')
  alert('Successfully kicked ' + player_name + '.');
});

我解决了这个问题。我有一个while循环,显然,每个btn名称和输入字段名称必须是唯一的,即使它们都在它们自己的标记中

$("#playerList").delegate('[id^="kick_btn"]', "click", function(event) {
  // get the current player number from the id of the clicked button
  var num = this.id.replace("kick_btn", "");
  var player_name = jQuery('input[name="player' + num + '"]').val();
  jQuery.get('testing.php?action=kick', {
      player_input: player_name
  });
  jQuery('input[name="player"]').attr('value','')
  alert('Successfully kicked ' + player_name + '.');
});

我同意Andre的建议,但只是想补充一下,您也可以使用.val()而不是.attr('value')。我添加了一个警报('Successfully kicked',player);在jQuery.get之后,它也没有启动..我解决了问题。我有一个while循环,显然,每个btn名称和输入字段名称都必须是唯一的,即使它们都在它们自己的标记中。$kickbtn.=“$('#kick_btn$k')。单击(函数(事件){var player_name$k=jQuery('input[name=\'player$k\'])。val()jQuery.get('testing.php?action=kick',{player_input:player_name$k});alert('Successfully kicked');});\n\n;现在在while循环中创建JS对象。我还在while循环中的字段名中添加了相同的计数。这现在可以正常工作了!我同意Andre的建议,但只想添加一点,即您也可以使用.val()而不是.attr('value')。我添加了一个警报('Successfully kicked',player);在jQuery.get之后,它也没有启动..我解决了问题。我有一个while循环,显然,每个btn名称和输入字段名称都必须是唯一的,即使它们都在它们自己的标记中。$kickbtn.=“$('#kick_btn$k')。单击(函数(事件){var player_name$k=jQuery('input[name=\'player$k\'])。val()jQuery.get('testing.php?action=kick',{player_input:player_name$k});alert('Successfully kicked');});\n\n;现在在while循环中创建JS对象。我还在while循环中的字段名中添加了相同的计数。这现在可以正常工作了!我已经做了您建议的更改,但是它仍然没有在处理程序上启动。无论数据是否正确,我都会在api->调用的日志中看到一些内容。
event.default()
也能正常工作,服务器端json解码显然不是问题所在。可能是,当他整理好JS时,但你还没有回答他的问题,甚至没有尝试这样做。我已经做了你建议的更改,但它仍然不会触发处理程序。无论数据是否正确,我都会在api->调用的日志中看到一些内容是对是错。
event.preventDefault()
也可以,服务器端json解码显然不是问题。可能是,当他整理好JS时,你没有回答他的问题,甚至没有尝试回答。好吧,我做了你建议的更改。我意识到一个错误,我没有使用jQuery(关于主函数的文档,我更改了基脚以与其余的一起使用。另外,如果你看..chat_btn和console_btn功能正确。我也会为上面的功能添加处理程序代码。好的,我做了你建议的更改
jQuery(document).ready(function () {
  jQuery('#kick_btn').click(function(event) { 
    event.preventDefault();
    var player_name = jQuery('input[name="player"]').val()
    if (player_name) { 
      jQuery.get('testing.php?action=kick', { player_input: player_name} );
    } else {
      alert('Please enter some text');
    }
  })
});
$(btn).click(function(event){
    //code
    return false;
});
$("#playerList").delegate('[id^="kick_btn"]', "click", function(event) {
  // get the current player number from the id of the clicked button
  var num = this.id.replace("kick_btn", "");
  var player_name = jQuery('input[name="player' + num + '"]').val();
  jQuery.get('testing.php?action=kick', {
      player_input: player_name
  });
  jQuery('input[name="player"]').attr('value','')
  alert('Successfully kicked ' + player_name + '.');
});