Как передать переменную в веб-сервис в $ .ajax - PullRequest
3 голосов
/ 30 мая 2009

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

$(document).ready(function() {
  $.ajax({
    type: "POST",
    url: "JsonTestService.asmx/Test",
    data:"{'url':'http://www.cramster.com'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      alert(msg.d);
    }  
  });
});

Но когда я меняю строку на следующую, где x - переменная, она не работает. Можете ли вы сказать мне, как передать переменную в веб-службу в следующем коде.

data:"{'url':x}",

Ответы [ 4 ]

3 голосов
/ 30 мая 2009

Вы были действительно близко. Не заключайте значение элемента данных в кавычки, например:

$(function() {
  var dynamic_url = "http://www.example.com";
  $.ajax({
    type: "POST",
    url: "JsonTestService.asmx/Test",
    data: {
      url: dynamic_url
    },
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      alert(msg.d);
    }
  });
});`

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

2 голосов
/ 30 мая 2009

Причина, по которой вы должны заключать в кавычки всю строку JSON:

В запросах к ним службы сценариев ASP.NET AJAX и методы страниц понимают и ожидают параметры, сериализованные в виде строк JSON. Эти параметры анализируются из данных POST и используются в качестве аргументов для вызванного вами метода.

Однако, если вы непосредственно предоставите объект JSON в качестве параметра данных для вызова $ .ajax, jQuery будет сериализовать объект в виде серии пар k, v, которые нужно будет POSTed вместо передачи необработанного JSON в веб-службу.

Более подробная информация доступна в этой публикации о распространенных подводных камнях при использовании jQuery с веб-службами ASP.NET AJAX и методами страниц , если вам интересно.

Вас также может заинтересовать , использующий метод stringify, чтобы сделать построение строки JSON намного чище .

1 голос
/ 30 мая 2009

Правильно иметь полный json в виде строки в jquery docs, очевидное решение для получения значения x в нем:

data:"{\"url\":\"" + x + "\"}",
1 голос
/ 30 мая 2009

Должно работать следующее:

$(document).ready(function() {
    var x = 'http://www.cramster.com';

    $.ajax({
        type: "POST",
        url: "JsonTestService.asmx/Test",
        data: { 'url': x },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            alert(msg.d);
        }
    });
})

Вам нужно потерять кавычки вокруг параметра data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...