Javascript 第二次ajax调用时会话超时
使用ASP.Net MVC 5、Razor视图、VS 2013、MSSQL 2012 我选择一个类别编号,然后点击选择按钮。使用CategoryID,ajax调用从服务器端带来一些数据 第一次点击按钮,程序运行良好。但是,在第二次单击时,没有服务器端方法调用&ajaxrequest中没有错误。它只返回一个SessionTimeOut 这是我的剧本:Javascript 第二次ajax调用时会话超时,javascript,jquery,ajax,Javascript,Jquery,Ajax,使用ASP.Net MVC 5、Razor视图、VS 2013、MSSQL 2012 我选择一个类别编号,然后点击选择按钮。使用CategoryID,ajax调用从服务器端带来一些数据 第一次点击按钮,程序运行良好。但是,在第二次单击时,没有服务器端方法调用&ajaxrequest中没有错误。它只返回一个SessionTimeOut 这是我的剧本: $("#btnChoose").click(function (e) { //var brand = $("#brands inpu
$("#btnChoose").click(function (e) {
//var brand = $("#brands input:radio:checked").val();
//$("#output").html("<b>Your favorite mobile brand: </b>" + brand);
$("#BrowseCategory").fadeOut(300);
//e.preventDefault();
var timer = setInterval(LoadeBayItemConditionAjax, 1000);
function LoadeBayItemConditionAjax() {
var selectedcategoryID = $("[id='hidCategoryID']").val();
alert('hit');
var URL = "@Url.Action("LoadCategoryFaced", "Listing")";
$.ajax({
url: URL,
type: 'POST',
data: JSON.stringify({ catId: selectedcategoryID }),
dataType: 'json',
contentType: 'application/json',
//async: false,
//cache: false,
timeout: 30000,
success: function (data) {
var subSelect = $('#eBayItemCondition');
alert(subSelect);
subSelect.empty();
alert(data);
if (data != null || data != '')
$("#eBayItemConditionDiv").show();
else
$("#eBayItemConditionDiv").hide();
$.each(data, function (key, ddlCondition) {
$('select#eBayItemCondition').append($('<option/>', {
value: ddlCondition.Value,
text: ddlCondition.Name
}));
});
},
error: function (jqXHR, exception) {
var status = AjaxErrorHandle(jqXHR, exception);
Notification("error", status, false);
}
});
alert();
clearInterval(timer);
}
return false;
});
$(“#btnChoose”)。单击(函数(e){
//var brand=$(“#brands输入:radio:checked”).val();
//$(“#输出”).html(“您最喜欢的移动品牌:+品牌);
美元(“#BrowseCategory”)。淡出(300);
//e、 预防默认值();
var timer=setInterval(LoadeBayItemConditionAjax,1000);
函数LoadeBayItemConditionAjax(){
var selectedcategoryID=$(“[id='hidCategoryID']”)val();
警惕(“击中”);
var URL=“@URL.Action”(“LoadCategoryFaced”,“Listing”);
$.ajax({
url:url,
键入:“POST”,
数据:JSON.stringify({catId:selectedcategoryID}),
数据类型:“json”,
contentType:'应用程序/json',
//async:false,
//cache:false,
超时:30000,
成功:功能(数据){
var subSelect=$(“#eBayItemCondition”);
警报(子选择);
subSelect.empty();
警报(数据);
如果(数据!=null | |数据!='')
$(“#eBayItemConditionDiv”).show();
其他的
$(“#eBayItemConditionDiv”).hide();
$.each(数据、函数(键、条件){
$('select#eBayItemCondition')。追加($(''{
value:ddlCondition.value,
text:ddlCondition.Name
}));
});
},
错误:函数(jqXHR,异常){
var status=AjaxErrorHandle(jqXHR,异常);
通知(“错误”、状态、错误);
}
});
警惕();
清除间隔(计时器);
}
返回false;
});
如何防止此会话超时?为什么会发生这种情况?您是说服务器方法永远不会被第二次调用吗?或者它被调用但抛出会话超时?@Nilesh第二次服务器方法被“从不”调用。事实上,在第一次尝试之后,服务器方法从未被调用。AJAX请求转到
success
而不是error。您使用的是internet explorer吗?尝试使用chrome并查看是否再次触发请求。使用setTimeout
-这样您就不需要调用clearinVal
@Nilesh我已经尝试过IE、chrome、Firefox和Safari。同样的结果。