jQuery POST在服务器上传递空字符串(ASP.NET)
本文关键字:字符串 ASP NET POST 服务器 jQuery | 更新日期: 2023-09-27 18:08:28
我有一个ASP。NET应用程序通过AJAX向我的应用程序中的处理程序发送数据。这在本地调试时可以正常工作,但是一旦我将解决方案部署到服务器,处理程序就只接收一个空字符串。我试着摆弄contentType和dataType,但没有运气。
这是目前为止我的代码。
aspx发送页面,而"myData"是一个简单的字符串:
$.ajax({
type: "POST",
url: "handlers/changeRiskGroup.ashx",
data: myData,
// tried all those content/dataTypes without any luck
//contentType: "text/plain",
//dataType: "text",
//contentType: "application/json; charset=utf-8",
//dataType: "json",
error: function (xhr, status, error) {
console.log(xhr.responseText);
},
success: function (msg) {
console.log(msg);
}
});
.ashx.cs:
public void ProcessRequest(HttpContext context) {
//string data = new StreamReader(context.Request.InputStream).ReadToEnd();
var data = String.Empty;
context.Request.InputStream.Position = 0;
using(var inputStream = new StreamReader(context.Request.InputStream)) {
data = inputStream.ReadToEnd();
}
if (data != "") {
// doing something with my data here.
// this is never reached while on the server, but works fine locally!
} else {
context.Response.Write("Please supply data to the risk group service!");
}
}
public bool IsReusable {
get {
return false;
}
}
}
.ashx.cs文件中的data
变量在本地调试时填充,但在服务器上总是"。我不知道为什么。
var para={};
para.myData="abcd"
$.ajax({
type: "POST",
url: "handlers/changeRiskGroup.ashx",
data: para,
error: function (xhr, status, error) {
console.log(xhr.responseText);
},
success: function (msg) {
console.log(msg);
}
});
来自服务器端
string myData=contect.Request.Form["myData"].toString();
很简单,我花了20个小时才弄明白。在这里找到答案:Web服务返回"301错误永久移动";在生产环境
简而言之,我在项目中创建了一个空白页面,以确保没有插件等干扰jQuery的执行。此外,我还创建了一个非常简单的掩码,用于向处理程序URL提交某些数据。在这个掩码内,我改变了不同的方式来POST数据,当我尝试将POST实现为[WebMethod]时,我终于得到了一个线索,因为响应是"301永久移动"。因此,我可以开始调查并发现我的服务器正在小写url,显然jQuery/HTTP不喜欢这样。
我希望这篇文章能帮助到其他有类似问题的人。