我正在学习如何应用ajax到我的jquery/php/mysql脚本回调触发的目的。这个问题可能是由于我不知道这个术语的名称。
问题:有没有一种方法来重置ajax回调而不重新加载页面脚本。
目标:我有一个mysql查询显示在jQuery Accordian 1, 2和3。目标是单击Accordian的查询结果href,并在jQuery UI Tab 3中显示结果,而无需重新加载页面…到目前为止,脚本在第一次回调时触发,但第二次没有触发。是否有一个术语或jquery命令,将重置jquery/ajax?
index . php
<?php
...script... include'right.content.php';
?>
<script type="text/javascript" >
$(function() {
$("#submit").click(function(){ // when submitted
var name = $('#string2').val();
var lname = $('#string3').val(); // // POST name to php
$('#stage').load('test.arena/test.php', {'string2':name, 'string3':lname,} );
});
$( "#tabs" ).tabs().find( ".ui-tabs-nav" );
$( "#accordion" ).accordion();
});
</script>
index.php - HTML节
<div id="stage">
<?php include'test.arena/test.php';?>
</div>
right.content.php
while ($row = mysql_fetch_array($result)){
if($row['stats'] == "1"){
$data .= "<tr><td colspan='2'>".$row['order_number']."</td>
<td colspan='2'>
<input type='hidden' id='string3' value='".$row['details']."'>
<input type='hidden' id='string2' value='".$row['order_number']."'>
<input type='button' id='submit' value='View'></td>
<td>info</td></tr>";
test.arena/test.php
if(!isset($_POST['string2'])){
$_POST['string2'] = "";
}else{
$string3 = "PO Number:" .$_POST['string3'];
$string2 = "Order:" .$_POST['string2'];
echo $string3 ."</br>";
echo $string2 ."</br>";
}
ID为'submit'的元素是否在ID为'stage'的元素中?如果是,尝试将$("#submit").click(function(){
更改为$("#submit").live('click', function(){
。
这个问题可能是因为你的提交按钮在'stage'div里面。这意味着当你加载新的'stage'内容时,它会删除旧的按钮并添加一个新的,新的按钮不会有任何点击的东西。
这个问题的快速解决方法是使用一个'live'处理程序。
$(function() {
$("#submit").live('click', function(){ // when submitted
var name = $('#string2').val();
var lname = $('#string3').val(); // // POST name to php
$('#stage').load('test.arena/test.php', {'string2':name, 'string3':lname,} );
});
$( "#tabs" ).tabs().find( ".ui-tabs-nav" );
$( "#accordion" ).accordion();
});
但另一个解决方案,可能使问题更清楚,是在加载完成后重新添加click处理程序。
$(function() {
function submitClicked() {
var name = $('#string2').val();
var lname = $('#string3').val(); // // POST name to php
$('#stage').load(
'test.arena/test.php',
{ 'string2':name, 'string3':lname },
function() {
addClickHandler();
}
); // display results from test.php into #stage
}
function addClickHandler() {
$('#submit').click(submitClicked);
}
addClickHandler();
$( "#tabs" ).tabs().find( ".ui-tabs-nav" );
$( "#accordion" ).accordion();
});