2013-02-19 147 views
0

我在jquery中學習$ .post,幾個小時後,我很激動,它的工作。

問題是,它只適用於頁面的第一次執行,或者如果我手動刷新頁面。

是否有可能location.reload();工作不正常或者location.reload()在這裏不正確?

任何幫助表示讚賞。我死定了。

這裏是我的代碼:

<script type="application/x-javascript"> 

    $("a#edit").click(function(e){ 
     e.preventDefault(); 
     var id; 
     id = $(this).attr('sid'); 
     $.modal.prompt('Editing Source ID: ' + id, 
      function(){ 
       $.post("<?php echo $_SERVER['PHP_SELF']; ?>", { 
             up: $('#prompt-value').attr('value'), 
             sid: id           
             }) 
       notify('Notification', 'Source ' + id + ' changed to: ' + $('#prompt-value').attr('value'), { 
        system: true, 
        icon: 'img/demo/icon.png', 
        iconOutside: false 
       }); 
       location.reload(); 
      }); 
    }); 

</script> 

我在全盤損失。

回答

2

嘗試添加的console.log($( 「A#編輯」))您將click事件之前。

此代碼令人困惑,因爲您似乎是AJAX發佈到當前文件,然後刷新,使得ajax後無用,可能已發佈到自己。

大多數jquery函數是異步的,使用成功回調或延遲完成,如果通知只應執行成功。

$.post("<?php echo $_SERVER['PHP_SELF']; ?>", 
    { 
     up: $('#prompt-value').attr('value'), 
     sid: id           
    }   
).done(function (data) { 
    // Success, read response data, send notification if applicable and use 
    // the response data to change the current page without having to refresh 
}).fail(function() { 
    // Failure on the request, handle it 
}); 
+0

工作,但我仍然需要做location.reload()。這是由於我正在編輯的表從文檔開頭的PHP函數中調用。當頁面加載時,它會執行一個PHP函數來訪問所有用戶,然後在主體中使用HTML和PHP來構建用戶表。此點擊操作位於用戶所在行的編輯按鈕上(由ID歸屬)。 我想不出有什麼辦法可以刷新php funnction來獲取所有用戶,並重新編寫表而不重新加載頁面。而在JavaScript中執行php的想法讓我生病。 – ChadM 2013-02-19 16:20:55

+0

如果這工作,它正在工作。但考慮閱讀有關MVC,以幫助您在未來組織您的代碼,通過您的描述我假設代碼不容易閱讀或保持:) – cernunnos 2013-02-19 17:36:01

+0

有什麼建議嗎?我正在考慮你的建議,現在我正在閱讀關於cakePHP和CodeIgniter的信息。不確定哪個最容易拾取和使用JqueryUI。 – ChadM 2013-02-19 22:50:00

0

使用

$("a#edit").live('click',function(e){ 
... 
}); 

的jQuery 1.4。+我想

+0

http://api.jquery.com/live/ 什麼是投票權,你甚至嘗試過或替代? 從jQuery 1.7開始,不推薦使用.live()方法。使用.on()附加事件處理程序。老版本的jQuery用戶應優先使用.delegate(),而不要使用.live()。 – 2013-02-19 15:58:17

+0

提示後頁面正在重新加載,我不認爲這是代表團問題。更何況,'.live'在當前版本的jQuery中不存在。 – 2013-02-19 16:00:23

+0

他沒有將任何新內容帶入他的頁面,以便委派要指定的事件。 – 2013-02-19 16:01:50