2016-08-16 53 views

回答

1

您可以创建e javascript中的对象,并使用JSON.stringify()将其发送到[WebMethod]。该对象将自动被反序列化为后面代码中的C#类。

后面的代码:

public partial class CallingWebMethodFromJS : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    [System.Web.Services.WebMethod] 
    public static string Get_Data(Parameters parameters) 
    { 
     System.Diagnostics.Debugger.Break(); 
     return ""; 
    } 
} 

public class Parameters 
{ 
    public string Value1 { get; set; } 
    public string Value2 { get; set; } 
    public string Value3 { get; set; } 
} 

.ASPX:

<head runat="server"> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $("#btnOK").click(function() { 
       var parameters = 
        { 
         "Value1": $("#value1").val(), 
         "Value2": $("#value2").val(), 
         "Value3": $("#value3").val(), 
        }; 

       $.ajax({ 
        type: "POST", 
        url: "CallingWebMethodFromJS.aspx/Get_Data", 
        contentType: "application/json", 
        data: JSON.stringify({ parameters: parameters }), 
        success: function (data) { 
         alert('success'); 
        }, 
        error: function (errordata) { 
         alert('failure'); 
        } 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <input type="text" id="value1" /> 
     <input type="text" id="value2" /> 
     <input type="text" id="value3" /> 
     <input type="button" value="OK" id="btnOK" /> 
    </form> 
</body> 
+0

调试你的javascript并告诉我错误是什么?我有一个名为CallingWebMethodFromJS.aspx的页面,并且在该页面中,我有一个名为Get_Data的[WebMethod],如果你的设置不一样,你会得到一个错误。如果你不有3个文本框在您的HTML ID值为1 value2和value3你也会得到一个error.Debug你的JavaScript在浏览器控制台 –

+0

错误消失了,但有没有办法在其中我可以使用FormCollection内置的类接收窗体? –

+0

用来做什么?使用强类型的C#类比FormCollection更容易出错,这是一个NameValueCollection –

0

如果你得到的WebMethod该值。 拆分您的结果是“&”。所以你有密钥的列表对。

OR反序列化JSON

通行证的Json string和转换是JSON类(反序列化)的任何列表中再次

+0

但那不是好的解决办法?以及如何与多对配对? –

0

试试这个..

JObject o = JObject.Parse(funcParam); 

string value1= (string)o["textbox1"];