当 jQuery Ajax 调用完成时控制请求
Posted
技术标签:
【中文标题】当 jQuery Ajax 调用完成时控制请求【英文标题】:Control a request when a jQuery Ajax call done 【发布时间】:2016-06-08 12:08:15 【问题描述】:我使用$.post()
使用Ajax 调用服务器,然后使用JTemplate
将数据写入当前页面。但是,如果会话超时,服务器会发送重定向指令将用户发送到登录页面。在这种情况下,jQuery
正在将div
元素替换为登录页面的内容,迫使用户的眼睛确实见证了一个罕见的场景。
如何使用jQuery 1.9
管理来自Ajax
调用的重定向指令?
【问题讨论】:
您是否尝试在 $.post() 设置的“错误”块中捕获该异常? 【参考方案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);
)
【讨论】:
以上是关于当 jQuery Ajax 调用完成时控制请求的主要内容,如果未能解决你的问题,请参考以下文章