доступ к параметрам вызова JSON в веб-методе - PullRequest
2 голосов
/ 14 октября 2010

Мне не нужно ничего сложного или сложного, я просто пытаюсь передать простую строку в качестве параметра моему веб-методу.Как я могу это сделать?

Вот вызов веб-метода [WebMethod] public static 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>

Вот суть моего веб-метода:

   public static ArrayList GetColumns(string TorVName)
   {
        String cnstr = "myconnectstring";
        //string TorVName = System.Web.HttpContext.Current.Request.QueryString["TableOrViewName"];
        //string TorVName = "Aged";
        //JavaScriptSerializer serializer = new JavaScriptSerializer();
        string TorVName = System.Web.HttpContext.Current.Request.QueryString["TOrVName"].ToString();
        string Sql = String.Empty;

Я считаю глупым и обескураживающим, что это должно быть настолько сложным и трудным.

Спасибо, Дин

Ответы [ 3 ]

0 голосов
/ 14 октября 2010

Я не мог понять, что именно вы хотите.В любом случае, с моей точки зрения, я вижу, что вы используете JQuery.Я написал плагин JQuery для более легкого вызова методов ajax.Вы можете скачать его с: http://www.4shared.com/file/Y72VBeLc/PageMethod.html
Использование:
$.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;
}

Функция успеха может иметь сериализованный объект json в качестве возвращаемого значения.в функции обратного вызова вы можете получить доступ к CustomData

 function onSuccess(response)
  {
      alert('Your Name: ' + response.d.name + ', Your ID: ' + response.d.id);
  }
  function onFail(response)
  {
      alert("An error occurred.");
  }
0 голосов
/ 15 октября 2010

В вашем ajax-запросе для параметра data сделайте это следующим образом:

data: "myData=" + jsonData,

Затем в вашем веб-методе сопоставьте аргумент с «myData» следующим образом:

[WebMethod()]
public static ArrayList GetColumns(string myData)
{
 .....Your code
}

Ваш веб-метод достаточно умен, чтобы сопоставить параметр с аргументом, если имена совпадают. Как только вы получите вашу строку, вы можете десериализовать ее и вызвать свой не-веб-метод для создания экземпляра вашего пользовательского объекта данных.

0 голосов
/ 14 октября 2010

Если я понимаю, что вы хотите, вам просто нужно добавить строку запроса к вашему URL в вашем вызове ajax:

url: "Default.aspx/GetColumns?param=value",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...