【问题标题】:Control a request when a jQuery Ajax call done当 jQuery Ajax 调用完成时控制请求
【发布时间】:2016-06-08 12:08:15
【问题描述】:

我使用$.post() 使用Ajax 调用服务器,然后使用JTemplate 将数据写入当前页面。但是,如果会话超时,服务器会发送重定向指令将用户发送到登录页面。在这种情况下,jQuery 正在将div 元素替换为登录页面的内容,迫使用户的眼睛确实见证了一个罕见的场景。

如何使用jQuery 1.9 管理来自Ajax 调用的重定向指令?

【问题讨论】:

  • 您是否尝试在 $.post() 设置的“错误”块中捕获该异常?

标签: javascript jquery ajax xmlhttprequest


【解决方案1】:

您必须使用 json 数据来响应客户端。 例如: 在 PHP 文件中

<?php
//for example, data you want to response to client is a html string
$data = '<table></table>';
if($is_timeout && $is_ajax_request) {
   //shouldn't redirect, should return json_encode
   echo json_encode(array('timeout'=>1));
   die();
}else{
   echo json_encode(array('data'=>$data));
   die();
}

在您的 javascript post 中,您可以在下面进行编辑:

$.post('your_url_to_php_file',{data:data_to_post}, function(resp){
   var data = jQuery.parseJSON(resp);
   if(data.timeout) {
      alert("timeout");
      return;
   }else{
      $("#your_div").html(data.data);
   }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多