Jquery的Ajax(POST模式)一般处理程序引用IRequiresSessionState接收不到传值
问题描述:
自己做的一个项目(开发中,C#)用了electron,来桌面化网站。本机安装node.js;
数据交互都是用jQuery的Ajax来实现的;
前段时间都一直好好的,但后来好像是改动了些其他页面关联的js脚本代码,当时记的运行也正常;
但后来隔了段时间,再运行,第一个登录页面的ajax就出问题了,一般处理程序(.ashx)获取不到ajax传过来的参数值了!
后来写了最简单的测试代码来实验是否能接收到到参数,但还是不行,接收到的参数值始终都是NULL;如下图:
JS测试脚本:
页面调用脚本(页面加载时调用,只看第一行就行):
一般处理程序代码(不用关心返回结果,只看变量abc的值就行):
运行结果截图:

-------------------------分割线------------------------------------
后来发现有两种方式能让一般处理程序接收到传递的参数值:
1、脚本Ajax改为GET模式,就能正常接收;
2、或者一般处理程序把IRequiresSessionState继承去掉,也能接收到参数值;
但问题是之前一开始都是很正常的,而且我后来又新建了一个项目,简单写了个ajax,post和IRequiresSessionState都不影响!
网上查了很多资料,基本没有这方面的帖子;找到两个相同问题的帖子,但都没帮助;一个楼主解决了但没说怎么解决的,一个是换了种方式,避开使用ajax了……
所以,只能到论坛求助了,还望各位大拿给支招,最好能告知是什么原因,以及该怎么解决……非常感谢!
自己做的一个项目(开发中,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了……
所以,只能到论坛求助了,还望各位大拿给支招,最好能告知是什么原因,以及该怎么解决……非常感谢!
...全文
相关推荐
jquery ajax接收后台传值
通过jsp页面中下拉框的值控制div中不同内容的显示
jQuery Ajax向某个页面传值并取得返回的数组
jQuery Ajax向某个页面传值并取得返回的数组
一般处理程序+ajax
通过jquery的ajaxj技术调用后台数据,并返回到前台以及实现赋值
PHP+Jquery+AJAX POST,GET提交表单并接收返回
PHP+Jquery+AJAX POST,GET提交表单并接收返回
jQuery ajax、post、get、json格式传递数据例子
jQuery ajax、post、get、json格式传递数据例子 jQuery ajax、post、get、json格式传递数据例子


