2013-02-27 58 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

相关问题