2013-02-27 117 views
1

我有一個確認對話框,當用戶單擊鏈接時會導致更新查詢。執行更新查詢,然後更改Jquery Mobile中的頁面

<div class="ui-bar"> 
    <a id="confirm" href="#" data-strid="<?php echo $str_info['str_id'] ?>">Confirm</a> 
</div> 

我所希望做的是運行更新查詢,然後重新加載前一頁,上面有更新的信息。

我以爲我做到了這一點,但某種錯誤不斷出現在螢火蟲和ajax似乎並沒有成功。只有當我重新加載頁面時纔會出現錯誤...並且當我在其上放置延遲時,沒有錯誤,所以我甚至無法讀取它是什麼。

<script> 
     $('#confirm').click(function(){ 
     var str_id = $("#confirm").data("strid"); 
     $.ajax({ 
      type: "POST", 
      async: true, 
      url: '../../ajax/add_land', 
      dataType: 'json', 
      data: { str_id: str_id }, 
      success: function(){ 

      } 
     }); 
     $('.ui-dialog').dialog('close') 
     setTimeout(
      function() 
      { 
       location.reload() 
      }, 750); 
     return false; 
    }); 
</script> 

有沒有什麼好的方法來完成這個?總之,我正在尋找執行更新查詢,然後重新加載上次查看的頁面(而不是對話框),以便顯示更改的信息。 ../../ajax/add_land在PHP中。

+0

什麼樣的錯誤?你可以在你的問題中提供嗎? – 2013-02-27 14:08:18

+0

也可以使用'$('#confirm')來代替'return false',點擊(function(e){e.preventDefault();' – 2013-02-27 14:13:08

+0

謝謝i。我接受了你的建議。 – 2013-02-27 16:24:54

回答

1

很少有更好的實現這一目標的方式,但已經超出了點,你的情況,你應該這樣做:

<script> 
     $('#confirm').click(function(){ 
     var str_id = $("#confirm").data("strid"); 
     $.ajax({ 
      type: "POST", 
      async: true, 
      url: '../../ajax/add_land', 
      dataType: 'json', 
      data: { str_id: str_id }, 
      success: function(){ 
       $('.ui-dialog').dialog('close');    
       location.reload(); 
      } 
     }); 
     return false; 
    }); 
</script> 

當Ajax調用成功執行,它會調用一個成功回調內部代碼。 Ajax調用是異步操作,這意味着其餘代碼不會等待它完成。由於這個成功回調被使用。所以需要暫停。

一件事,這裏還有一個錯誤回調,用它來調試AJAX問題:

error: function (request,error) { 
    alert('Network error has occurred please try again!'); 
}, 
+0

Thanks for the回覆我最初的對話框關閉並刷新成功回調,但它阻止它開火。我不完全確定爲什麼...和螢火蟲似乎沒有告訴我太多..我會嘗試並收集一些錯誤 – 2013-02-27 16:08:12

+1

嗯,事實證明,我需要在成功回調中包含一些東西...所以在PHP中,我添加了一個'echo true',並在ajax成功中添加了'if(content == true){做我需要的東西}'和它的工作,然而醜陋:) – 2013-02-27 16:23:42

+0

他們可能因ajax調用期間的錯誤而停止發射。因此,請使用錯誤回調來查找錯誤。 – Gajotres 2013-02-27 16:24:53

相關問題