关于javascript:在完成jQuery Ajax调用时控制请求

Control a request when a jQuery Ajax call done

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

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


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

1
2
3
4
5
6
7
8
9
10
11
<?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中,您可以编辑以下内容:

1
2
3
4
5
6
7
8
9
$.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);
   }
})