2012-10-18 76 views
2

我在关于PHP,jQuery和阿贾克斯的那一刻的问题。关于PHP,jQuery和Ajax的问题​​。

我在我的页面底部有一个div,其中有来自数据库的数据,现在对于数据的每次迭代都会创建一个新的div,div具有“pagestatus”的id并且具有自动增量在它旁边,所以id改变为每个div像这样:'pagestatus0','pagestatus1'等

现在我不是全新的jquery,因为我用它来使页面更具互动性,我用Ajax更新MySQL数据库。

我遇到的麻烦的代码不过,我想它去是这样的:

  • 按钮被点击的div
  • 按钮淡入(或DIV,这曾经是更容易)
  • 一个隐藏的div的加载GIF出现下面
  • Ajax调用到PHP文件进行更改数据库
  • 的jQuery则衰加载GIF退了出来,并淡出按钮回到

我已经为它写了一些代码,但我认为我在某处出错了,有人可以看到我做错了什么,并让我知道如何解决它。

这里是我的Jquery:

$(document).ready(function(){ 
    for(i=0;i<$('#changestatusoff').val();i++){ 
     (function(x){ 
      $('#changestatusoff'+x).click(function(){ 
       $('#changestatusoff'+x).fadeOut('slow',function(){ 
        $('#loadingstatus').fadeIn('slow',function(){ 
         $.ajax 
         ({ 
          type: "POST", 
          url: '.php', 
          data: {'changestatusoff': changestatusoff}, 
          success: function(data) { 
           return data; 
          }, 
          error: function() { 
           alert('Error occured'); 
          } 
          $('#loadingstatus').fadeOut('slow',function(){ 
           $('#changestatusoff'+x).fadeIn('slow',function(); 
          }); 
         }); 
        }); 
       }); 
      }); 
     });   
    } 
})(i); 
}); 

这里是在div按钮:

<input type='button' value='Offline' id='changestatusoff".$count."' style='background: none repeat scroll 0% 0% rgb(0, 118, 188); color: rgb(255, 255, 255); border: 1px solid rgb(0, 0, 0); font-weight: bold; cursor: pointer; margin:5px;'/> 

任何帮助表示赞赏

+0

你能粘贴HTML的例子吗? ;-) –

+0

你在哪里设置'changestatusoff'变量?而不是循环所有的ID,为什么你不使用类? – Barmar

+0

“alert('Error occured')后面有语法错误;} 我认为应该有一个”);“来结束ajax函数调用。 –

回答

0

我认为你需要检查data: {'changestatusoff': changestatusoff},试着改变它data: {changestatusoff: 'changestatusoff'}

1

由于其他menti oned,我们不知道你在提交;-)

使用的一类,这意味着它dosent必须使每个项目一个新的绑定,就可以做到这一切在一次。

你可以这样做:

0

如果你想改变加载GIF回来,那么你就应该把最后两行:

$('#loadingstatus').fadeOut('slow',function(){ 
$('#changestatusoff'+x).fadeIn('slow',function(); 

在完成回调,而不是之后AJAX调用。

$.ajax 
({ 
type: "POST", 
url: '.php', 
data: {'changestatusoff': changestatusoff}, 
success: function(data) { 
    return data; 
}, 
error: function() { 
    alert('Error occured'); 
}, 
completed: function() { 
    $('#loadingstatus').fadeOut('slow',function(){ 
    $.('#changestatusoff'+x).fadeIn('slow',function(); 
} 
0

请尝试以下

$(function(){ 
    $('#Your_Event_Source').click(function(){ 
     $(this).fadeOut(600); 
     $('#loadingstatus').fadeIn(600); 
     $.post('you_file.php',{changestatusoff: 'yourValue'},function(data){ 
     if(data.success == 'yes'){ 
      alert(data.message); 
      $('#Your_Event_Source').fadeIn(600); 
      $('#loadingstatus').fadeOut(600); 
     }else{ 
      alert('failed'+ data.message); 
      $('#Your_Event_Source').fadeIn(600); 
      $('#loadingstatus').fadeOut(600); 
     } 
     },'json'); 
    }); 
}); 

我建议在PHP中使用的 '成功':

$data = array('success'=>'yes','message' => 'your meaasage',...); 
echo json_encode($data);