Jquery的Ajax(POST模式)一般处理程序引用IRequiresSessionState接收不到传值

霜影 霜影 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
问题描述:
自己做的一个项目(开发中,C#)用了electron,来桌面化网站。本机安装node.js;
数据交互都是用jQuery的Ajax来实现的;
前段时间都一直好好的,但后来好像是改动了些其他页面关联的js脚本代码,当时记的运行也正常;
但后来隔了段时间,再运行,第一个登录页面的ajax就出问题了,一般处理程序(.ashx)获取不到ajax传过来的参数值了!
后来写了最简单的测试代码来实验是否能接收到到参数,但还是不行,接收到的参数值始终都是NULL;如下图:

JS测试脚本:

function abcd() {
try {
$.ajax({
url: "../../Handlers/Handler1.ashx?rn=" + GetRandomNum(10),
type: "POST",
dataType: "json",
async: true,
data: {
canshu: "LXX"
},
//traditional: true,
success: function (data, status) {
if (data) {
var ab = data;
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
ShowErrMsg("errMsg", textStatus, true);
}
});
} catch (e) {
alert(e.message);
}
}

页面调用脚本(页面加载时调用,只看第一行就行):

<body onload="abcd();" style="overflow:hidden;"><%--GetPageSize();--%>
<form id="form1" runat="server">
<div class="divMainBody">

一般处理程序代码(不用关心返回结果,只看变量abc的值就行):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;

namespace TerminalManageSystem.Handlers
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler, IRequiresSessionState
{

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string abc = context.Request["canshu"];
context.Response.Write("Hello World");
}

public bool IsReusable
{
get
{
return false;
}
}
}
}

运行结果截图:


-------------------------分割线------------------------------------

后来发现有两种方式能让一般处理程序接收到传递的参数值:
1、脚本Ajax改为GET模式,就能正常接收;
2、或者一般处理程序把IRequiresSessionState继承去掉,也能接收到参数值;
但问题是之前一开始都是很正常的,而且我后来又新建了一个项目,简单写了个ajax,post和IRequiresSessionState都不影响!
网上查了很多资料,基本没有这方面的帖子;找到两个相同问题的帖子,但都没帮助;一个楼主解决了但没说怎么解决的,一个是换了种方式,避开使用ajax了……
所以,只能到论坛求助了,还望各位大拿给支招,最好能告知是什么原因,以及该怎么解决……非常感谢!
...全文
评论 5
收藏 已收藏
分享
返回顶部
霜影
JavaScript 87,983 成员 224,681 内容