Проблема с вызовом jQuery.ajax к веб-сервису - PullRequest
1 голос
/ 12 сентября 2009

Я разрабатываю регистрационную форму в ASP.NET, в которой я использую сценарии на стороне клиента. Поэтому я использовал метод jQuery.ajax для отправки данных всех полей на сервер через веб-сервис ASP.NET. Но когда я выполняю метод Jquery.ajax, он вызывает функцию ошибки. Я попытался отладить его с помощью Firebug в Firefox. Это показало ошибку 500 Internal Server Error. Теперь я предполагаю, что для вставки данных в WebService мне нужно использовать метод POST, а также мне нужна функция на стороне сервера внутри Webservice, которую можно вызывать с помощью метода POST. Я предоставляю несколько фрагментов кода для иллюстрации того, что я сделал.

Мой клиентский скрипт:

//My Client Side Function
function registerUser()
{
    var User = {
      FirstName:$get("txtFirstName").value,
      LastName:$get("txtLastName").value
      .
      .
      //and so on....This way I creat my json object to POST on server
      };

      //jQuery to POST Data
      jQuery.ajax({
        type:"POST",
        url:"Service/UserRegistration.asmx/InsertUser",
        data:User,
        success:notifyUser,
        error:setErrorField
      });

}

//Function for Success Complition
function notifyUser(msg)
{
       alert("Registration Successfull");
}

Мой веб-сервис на сервере:

//My C# Web Service Logic
[WebMethod]
public void InsertUser(User use)
{
      FreeUser us = new FreeUser();
      us.FirstName = use.FirstName;
      .
      .
      //and so on
}

Теперь я предполагаю, что метод POST требует WebInvoke class в качестве атрибута. Как мне сделать метод, который может быть вызван JavaScript? Возможно, мне придется использовать WebInvoke для этого.

Ответы [ 2 ]

6 голосов
/ 12 сентября 2009

Если у вас есть ASP.NET AJAX, доступный на стороне сервера (ASP.NET 2.0 + ASP.NET AJAX Extensions v1.0 или ASP.NET 3.5+), я обнаружил, что самый простой способ сделать это использовать JSON между клиентом и сервером. Вам просто нужно добавить атрибут [ScriptService] к вашему сервису, а затем использовать эту форму для вызова сервиса:

$.ajax({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "WebService.asmx/WebMethodName",
  data: "{}",
  dataType: "json"
});

Для получения дополнительной информации см. Полный пост здесь: http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

Чтобы предоставить объект JavaScript, как вы в этом примере кода, вам также нужно использовать JSON.Stringify для генерации соответствующей строки JSON для передачи на серверную .

0 голосов
/ 12 сентября 2009

Если вы отправляете объект JSON, добавьте следующую опцию к $.ajax:

contentType: "application/json; charset=utf-8",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...