Как отправить данные JSON в ASMX (из ASPX) с помощью JQuery? - PullRequest
3 голосов
/ 21 июня 2010

Я создал контактную форму в aspx 3.5 и использую jQuery для отправки ее в веб-сервис (asmx).

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

Это сторона клиента:

$(document).ready(function() 
{
    $("#submit").click(function(event)
    {
        $.ajax
        ({
            type: "POST",
            url: "RVContactFormMailer.asmx/HelloToYou",                
            data: "{'name': '" + $('#name').val() + "', 'company':'" + $('#company').val() + "', 'phone':'" + $('#phone').val() + "', 'email':'" + $('#email').val() + "', 'questions':'" + $('#questions').val() + "'}" ,                 
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
            AjaxSucceeded(msg);
         }, error: AjaxFailed
        });
   });

В firebug отправляет правильно:

{'name': 'jhon', 'company':'example', 'phone':'123', 'email':'jhon@jhon.com', 'questions':'hello'}

Код asmx (пожалуйста, игнорируйте имена, его пример:

  [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ScriptService] // To allow this Web Service to be called from script, using ASP.NET AJAX or JQuery.
    [ToolboxItem(false)]
    public class RVContactFormMailer : System.Web.Services.WebService
    {
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]  
        public string HelloToYou(string name)
        {
            return "Hello " + name;
        }
    }

Когда я отлаживаю, я вижу, что входной параметр "name" содержит только одну строку - я не знаю, как получить полную строку json, которую я посылаю службе, и содержит все данные формы - я хочу десериализовать ее в массив строк или что-то вроде, и обработать его. как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 21 июня 2010

проблема была не на стороне клиента - она ​​была на стороне сервера - проблема в том, что я посылаю несколько параметров в веб-службу, но функция получает только один:

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string HelloToYou(string name)

, в то время как правильныйнадо быть:

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string HelloToYou(string name, string company, string phone, string email, string questions)

в любом случае, Спасибо за помощь!

0 голосов
/ 21 июня 2010

Вы пытались просмотреть коллекцию request.form? поскольку вы делаете пост-запрос и передаете параметры как данные в запрос, он будет доступен в Request.Form.

...