Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET静态方法中使用jquery ajax调用向inputstream发布表单值_C#_Jquery_Asp.net_Ajax - Fatal编程技术网

C# 在ASP.NET静态方法中使用jquery ajax调用向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: "

试图使用

我走到了死胡同, 在客户端,表单值被合并和序列化,但由于不可能在静态方法中使用请求实例 我无法在服务器上接收seialized表单值, 我试图通过使用静态HttpContext.Current.Request.InputStream绕过它 但我得到了一条空的小溪。 如何在服务器中获取输入流? 客户端:

 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',
    ...
});