C# 在ASP.NET静态方法中使用jquery ajax调用向inputstream发布表单值
试图使用 我走到了死胡同, 在客户端,表单值被合并和序列化,但由于不可能在静态方法中使用请求实例 我无法在服务器上接收seialized表单值, 我试图通过使用静态HttpContext.Current.Request.InputStream绕过它 但我得到了一条空的小溪。 如何在服务器中获取输入流? 客户端:C# 在ASP.NET静态方法中使用jquery ajax调用向inputstream发布表单值,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,试图使用 我走到了死胡同, 在客户端,表单值被合并和序列化,但由于不可能在静态方法中使用请求实例 我无法在服务器上接收seialized表单值, 我试图通过使用静态HttpContext.Current.Request.InputStream绕过它 但我得到了一条空的小溪。 如何在服务器中获取输入流? 客户端: function myFunction() { $.ajax({ type: "POST", url: "
function myFunction() {
$.ajax({
type: "POST",
url: "ajaxForm.aspx/Receiver",
contentType: "application/json; charset=utf-8",
data: $('#myForm').serialize(),
datatype : "json",
cache: false,
success: function (data) {
$('#result').html(data);
},
error: function (data) {
alert('failed');
}
});
}
服务器端第一个版本(从该链接复制):
第二版:
[WebMethod ]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static void Receiver()
{
if (HttpContext.Current.Request.InputStream.Position != 0)
{
HttpContext.Current.Request.InputStream.Seek(0,System.IO.SeekOrigin.Begin);
}
byte[] data = new byte[HttpContext.Current.Request.InputStream.Length];
HttpContext.Current.Request.InputStream.Read(data, 0, data.Length);}
目前,您的数据看起来不像JSON。像这样试试
var jsonData = JSON.stringify({
form: $('#myForm').serialize()
});
在ajax中调用数据
...
contentType: "application/json; charset=utf-8",
data: jsonData,
datatype : "json",
...
您的方法:
[WebMethod ]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static void Receiver(string form)
{
//in the string form you should have myForm serialize.
}
如果您想使用Context.Session进行某些操作,则需要启用它
[System.Web.Services.WebMethod(EnableSession = true)]
这是一篇老文章,但我最近遇到了一个与客户类似的问题,我想我会分享我的经验 该客户端有一个运行jQuery 1.7.1的遗留应用程序(我们害怕更改它),最近设置了一个页面,只接受POST。在jQuery1.7.1(可能还有其他版本)中,我了解到您必须为POSTs传递
type
(以及method
?)
那么这个
$.ajax({
url: {url...},
data: {data...},
method: 'POST',
...
});
变成这个
$.ajax({
url: {url...},
data: {data...},
method: 'POST',
type: 'POST',
...
});
从此以后,每个人都过着幸福的生活
希望这能帮其他人省去一些麻烦。尝试使用这个问题的答案,谢谢,但是有没有办法通过使用请求输入流来获取值?如果我没有错,可以使用会话将数据从服务器发送到客户端。
$.ajax({
url: {url...},
data: {data...},
method: 'POST',
type: 'POST',
...
});