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变量在本地调试时填充,但在服务器上总是"。我不知道为什么。

jQuery POST在服务器上传递空字符串(ASP.NET)

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不喜欢这样。

我希望这篇文章能帮助到其他有类似问题的人。