C# 在web方法中访问JSON调用的参数

C# 在web方法中访问JSON调用的参数,c#,javascript,json,C#,Javascript,Json,我不需要任何花哨或复杂的东西,我只是尝试将一个简单的字符串作为参数传递给我的web方法。我怎么做 下面是web方法调用 [网络方法] 公共静态ArrayList GetColumns(字符串TorVName) 以下是JSON调用: <script type="text/javascript" language="javascript"> var qs = new Querystring(); var v1 = qs.get("TorVName"); var jsonDa

我不需要任何花哨或复杂的东西,我只是尝试将一个简单的字符串作为参数传递给我的web方法。我怎么做

下面是web方法调用 [网络方法] 公共静态ArrayList GetColumns(字符串TorVName)

以下是JSON调用:

<script type="text/javascript" language="javascript"> 
  var qs = new Querystring();
  var v1 = qs.get("TorVName");
  var jsonData = JSON.stringify(v1);  
        $().ready(function() {
            $.ajax({
                type: "POST",
                url: "Default.aspx/GetColumns",
                data: jsonData,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
       var optString = '<option value="-1">Select Column</option>';

      $.each(msg.d, function(index, item) {
        optString += '<option value="' + item + '">' + item + '</option>';
        });
        $('select[name^=DDLColumns]').html(optString);
                },
                error: function() {
                    alert("Failed to load columns");
                }
            });
        });
</script>
我认为这需要如此复杂和困难,这是愚蠢和令人沮丧的


谢谢Dean

如果我了解您想要什么,您只需要在ajax调用中将查询字符串附加到url:

url: "Default.aspx/GetColumns?param=value",

如果我了解您想要什么,您只需要在ajax调用中将查询字符串附加到url:

url: "Default.aspx/GetColumns?param=value",

我不明白你到底想要什么。无论如何,从我的观点来看,我看到您正在使用JQuery。我已经编写了一个JQuery插件来更轻松地调用ajax方法。您可以从以下位置下载:
用法:
$.PageMethod('PageMethodName',successFunction,failFunction,'param1',param1',param2',param2,…)
例如:

Javascript:

var myName =  'TestName';
var myId = '123';
$.PageMethod('ReturnCustomData', onSuccess, onFail, 'MyName', myName,'MyID', myId);
代码隐藏:

public class CustomData
{
    public string name;
    public int id;
}

[WebMethod()]
public static CustomData ReturnCustomData(string MyName, int MyID)
{
    CustomData MyData = new CustomData();
    MyData.name = MyName;
    MyData.id = MyID;
    return MyData;
}
success函数可以将序列化的json对象作为返回值。在回调函数中,您可以访问CustomData

 function onSuccess(response)
  {
      alert('Your Name: ' + response.d.name + ', Your ID: ' + response.d.id);
  }
  function onFail(response)
  {
      alert("An error occurred.");
  }

我不明白你到底想要什么。无论如何,从我的观点来看,我看到您正在使用JQuery。我已经编写了一个JQuery插件来更轻松地调用ajax方法。您可以从以下位置下载:
用法:
$.PageMethod('PageMethodName',successFunction,failFunction,'param1',param1',param2',param2,…)
例如:

Javascript:

var myName =  'TestName';
var myId = '123';
$.PageMethod('ReturnCustomData', onSuccess, onFail, 'MyName', myName,'MyID', myId);
代码隐藏:

public class CustomData
{
    public string name;
    public int id;
}

[WebMethod()]
public static CustomData ReturnCustomData(string MyName, int MyID)
{
    CustomData MyData = new CustomData();
    MyData.name = MyName;
    MyData.id = MyID;
    return MyData;
}
success函数可以将序列化的json对象作为返回值。在回调函数中,您可以访问CustomData

 function onSuccess(response)
  {
      alert('Your Name: ' + response.d.name + ', Your ID: ' + response.d.id);
  }
  function onFail(response)
  {
      alert("An error occurred.");
  }

在ajax请求中,对于数据参数,按如下方式执行:

data: "myData=" + jsonData,
[WebMethod()]
public static ArrayList GetColumns(string myData)
{
 .....Your code
}
然后在web方法中,将参数与“myData”匹配,如下所示:

data: "myData=" + jsonData,
[WebMethod()]
public static ArrayList GetColumns(string myData)
{
 .....Your code
}

如果名称相同,您的web方法足够聪明,可以将参数与参数匹配。收到字符串后,可以对其进行反序列化,并调用非webmethod来实例化自定义数据对象。

在ajax请求中,对于数据参数,按如下方式执行:

data: "myData=" + jsonData,
[WebMethod()]
public static ArrayList GetColumns(string myData)
{
 .....Your code
}
然后在web方法中,将参数与“myData”匹配,如下所示:

data: "myData=" + jsonData,
[WebMethod()]
public static ArrayList GetColumns(string myData)
{
 .....Your code
}

如果名称相同,您的web方法足够聪明,可以将参数与参数匹配。收到字符串后,您可以对其进行反序列化,并调用非webmethod来实例化自定义数据对象。

如果您不知道我想要什么,为什么要发布?@Lyle如果您无法表达您想要什么,为什么要发布问题?:)@莱尔,正如我所说,这是我从你的帖子中了解到的。我想你的意思是你的代码复杂且困难,我想提供一种更简单的方法。我可以向你展示我的web方法,但数据是私有化的,但是,我成功地将调用传递回ArrayList。我不理解你们的例子,我不会重写我的全部代码,因为我不能通过jsonWell传递一个字符串。我认为你们应该更多地研究从客户端调用web方法。没有必要向我展示您的web方法。没有必要重写整个代码。我猜你根本不了解我的样品。不管怎样,祝你使用ArrayList好运。如果你不知道我想要什么,为什么要发帖?@Lyle如果你不能表达你想要什么,为什么要发帖?:)@莱尔,正如我所说,这是我从你的帖子中了解到的。我想你的意思是你的代码复杂且困难,我想提供一种更简单的方法。我可以向你展示我的web方法,但数据是私有化的,但是,我成功地将调用传递回ArrayList。我不理解你们的例子,我不会重写我的全部代码,因为我不能通过jsonWell传递一个字符串。我认为你们应该更多地研究从客户端调用web方法。没有必要向我展示您的web方法。没有必要重写整个代码。我猜你根本不了解我的样品。无论如何,祝你好运使用ArrayList。另一方面,我如何在我的web方法中访问它;不要认为这很容易,我的web方法不理解Request.QueryString。。正在尝试:string TorVName=System.Web.HttpContext.Current.Request.QueryString[“TorVName”].ToString();没有运气:(另一方面,我如何在我的web方法中访问它?Request.QueryString[“param”];不要认为这很容易,我的web方法不理解Request.QueryString..trying:string TorVName=System.web.HttpContext.Current.Request.QueryString[“TorVName”].ToString();没有运气:(