【发布时间】:2016-12-08 08:45:40
【问题描述】:
我有一个 HTML/Javascript 页面正在对 .NET ajax 处理程序 (.ASHX) 进行 jQuery ajax 调用。在第一次调用时,我在数据对象中传递的参数存在且正确。但在随后的调用中,它们为 NULL。
JavaScript 设置:
var data = {
requestType: "RecentMXMeetings",
meetingType: "Maintenance",
baseDate: "6/15/2016",
daysPast: 90,
daysFuture: 30
}
$.ajax({
type: "GET",
url: "ajaxHandler.ashx",
dataType: "text",
cache: false,
data: data,
success: function (result) {
alert("Success: " + result.responseText);
},
error: function (result) {
alert("Error: " + result.responseText);
},
fail: function (result) {
alert("Error - Fail: " + result.responseText);
},
always: function (result) {
alert("Always: " + result.responseText);
}
});
处理程序代码(.ashx):
public class ajaxHandler : IHttpHandler {
public void ProcessRequest(HttpContext context) {
string retJSON = "NODATA";
var x = context.Request.Params["requestType"];
if (!String.IsNullOrEmpty(x)) {
switch (x) {
case "RecentMXMeetings":
retJSON = SerialiseRecentMeetings(context);
break;
// other cases...
}
}
context.Response.ContentType = "text/plain";
context.Response.Write(retJSON);
}
public bool IsReusable {
get {
return false;
}
}
//
// SerialiseRecentMeetings() and other methods...
//
}
我在“var x = context....”上添加了一个断点。在第一次运行时,x == "RecentMXMeetings"。在第二次和后续运行中,x == null。
这是我在调试时能够确定的:
如果我把ajax类型从“GET”改成“POST”再运行,再改回“GET”再运行一次,数据对象参数一次正确返回,然后后续调用再次为空。在“GET”和“POST”之间来回切换可以解决一个呼叫的问题。
问题是间歇性的。有时运行四五次后,x 会返回“RecentMXMeetings”,然后再次返回 null。
在运行之间等待一段时间有时会“重置”它,这对运行有好处。然后再次返回为空。
这是我第一次涉足 C# 中的 ajax 处理程序,所以我是这方面的新手。
这是缓存问题吗?这里有异步问题吗?我可能没有正确使用或处理 HttpHandler 吗?
【问题讨论】:
-
你能用
POST代替GET吗? -
尝试使用 fiddler 查看您的网络流量,看看 HttpHandler 是否真的每次都在获取查询字符串。
标签: javascript c# jquery ajax httphandler