Оболочка $. (ajax) для Jquery - передача параметров делегатам - PullRequest
1 голос
/ 14 мая 2010

Я широко использую функцию $. (Ajax) в своем приложении для вызова веб-сервисов ASP.net. Я хотел бы написать оболочку для централизации всех вызовов AJAX. Я нашел несколько простых решений, но ни одно не решает проблему передачи параметров делегатам, например, если у меня есть:

$.ajax({
        type: "POST",
          url: "http://localhost/TemplateWebService/TemplateWebService/Service.asmx/GetFoobar",

        data: jsonText,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var results = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;

            OnSuccess(results, someOtherParam1, someOtherParam2);


        },

        error: function(xhr, status, error) {
            OnError();
        }
    });

Оболочка для этого вызова должна иметь способ передать someOtherParam1, someOtherParam2 делегату OnSuccess ... Помимо упаковки переменных в общий массив, я не могу думать о других решениях.

Как вы, ребята, решили эту проблему?

1 Ответ

0 голосов
/ 14 мая 2010

У меня была такая же проблема. Мой способ обойти это - включить параметр в переменную данных, а затем извлечь его из this.data в случае успеха / ошибки / завершения. this.data будет выглядеть как foo = 1 & bar = 2 & baz = 3, когда вернется, поэтому вам нужно будет проанализировать параметры.

$.ajax({
  url: 'blah.html',
  data: {foo:1,someOtherParam1:2,someOtherParam2:3},
  success: function(data) {
    var params = this.data.split("&");
    OnSuccess(results, params[1].split("=")[1], params[2].split("=")[1]);
  }
});

Убедитесь, что вы не путаете this.data с переменной данных, которая возвращается с функцией успеха ...

...