2012-10-18 125 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);