AJAX Публиковать данные в asmx. Метод WebService всегда пуст - PullRequest
0 голосов
/ 25 февраля 2020

Я использую веб-сервис с методом тестирования (переименовать файл). С Ajax (на стороне клиента) я могу вызывать функцию в моем сервисе.

Но когда я отправляю Int, String..или что-нибудь в мой метод, данные показывают "ноль" ; В чем проблема?

мой javascript:

 
$.ajax({
    url: "WebServiceTest.asmx/NewId",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    //data: JSON.stringify({ rename: newName}),
    data: "{ 'Id': 8 }",
    dataType: "json",
    success: function(data) {
        alert(data.d);
    }
});

мой веб-сервис

[System.Web.Script.Services.ScriptService]
public class WebServiceTest: WebService
{

    [WebMethod]
    public int NewId(int id )
    {
        //..do something

        return id; //always null
    }        
}

Спасибо! :)

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Веб-службы ASMX используют SOAP, поэтому вам необходимо отправлять сообщения внутри SOAP полезной нагрузки. Попробуйте отправить ваше сообщение так:

data: '<soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
  '<soap:body>' +
  '<newid xmlns="WebServiceTest.asmx/NewId">' +
  '<id>' + id + '</id>' +
  '</newid>' +
  '</soap:body>' +
  '</soap:envelope>',
beforeSend: function (xhr) {
  xhr.setRequestHeader('SOAPAction', 'WebServiceTest.asmx/NewId');
},
0 голосов
/ 25 февраля 2020

Параметры запросов Http: с учетом регистра . Так как @ Maurits van Beusekom указал на комментарий, похоже, вы не отправляете данные должным образом: данные должны быть data: "{ 'id': 8 }" вместо data: "{ 'Id': 8 }" следующим образом:

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