我通过jQuery ajax向.NET通用处理程序(.ashx)发出请求。
我正在返回JSON,我已在JSONLint上验证过,但由于它是敏感数据而无法发布。
问题是调用仅在同步完成时返回(async:false
)。当异步完成时,它永远不会回来。 async:false
将调用我的成功函数以及所有全局函数。 async:true
只会调用全局函数ajaxStart
和ajaxSend
,async:false
会调用这些函数以及其他函数。
我不知道如何进一步调试或确定没有回复的原因。
$.ajax({
type: "POST",
async: false,
cache: false,
timout: 600000,
data: request_object.GetQueryString(),
dataType: "json",
responseType: "json",
error: function (request, error_type, error_message) {
alert("error");
},
success: function (data, status, request) {
alert("success");
},
url: "./ReportRequestHandler.ashx",
complete: function () {
alert("here");
}
});
$(document).ajaxError(function () {
alert("ajaxError");
}).ajaxSend(function () {
alert("ajaxSend");
}).ajaxStart(function () {
alert("ajaxStart");
}).ajaxStop(function () {
alert("ajaxStop");
}).ajaxSuccess(function () {
alert("ajaxSuccess");
}).ajaxComplete(function () {
alert("ajaxComplete");
});
答案 0 :(得分:0)
答案 1 :(得分:0)
我在你的配置没有async属性的页面中运行代码,它似乎对我来说很好..
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Pages" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<title></title>
<script type="text/javascript">
$(document).ajaxError(function() {
alert("ajaxError");
}).ajaxSend(function() {
alert("ajaxSend");
}).ajaxStart(function() {
alert("ajaxStart");
}).ajaxStop(function() {
alert("ajaxStop");
}).ajaxSuccess(function() {
alert("ajaxSuccess");
}).ajaxComplete(function() {
alert("ajaxComplete");
});
$.ajax({
type: "POST",
timout: 600000,
data: { 'type': 'check' },
dataType: "json",
responseType: "json",
error: function(request, error_type, error_message) {
alert("error");
},
success: function(data, status, request) {
alert("success");
},
url: "../../Ajax/GenericData.ashx",
complete: function() {
alert("here");
}
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
</div>
</form>
</body>
</html>
我按顺序收到了所有警报消息。你能查看浏览器的控制台部分,看看当你的配置中删除了async:false时,你的请求是怎么回事。
答案 2 :(得分:0)
我发现了问题。 用于触发事件的按钮是提交页面并重新加载太快,我看不到任何闪烁。