Как вызвать ASP. NET WebMethod через AJAX (Native JS) - PullRequest
0 голосов
/ 05 марта 2020

Есть ли способ вызвать WebMethod с использованием собственного JS AJAX?

Похоже на:

           $.ajax({
                    type: "POST",
                    url: "AssignAdditional_Equip.aspx/getEquipListing",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                        var result = JSON.parse(data.d);
                        console.log(result);
                    },
                    error: function (response) {
                        alert(response);
                    }
                });  

Код ниже - моя попытка:

var requestVar = new XMLHttpRequest();
requestVar.open('GET', 'AssignAdditional_Equip.aspx/getEquipListing');
requestVar.onload = function () {
    if (requestVar.status === 200) {
        console.log(requestVar.responseText);
    }
    else {
        alert('Request failed.  Returned status of ' + xhr.status);
    }
};
requestVar.send();

Редактировать: Вот мой веб-метод о коде, чтобы устранить некоторую путаницу

    <WebMethod>
Public Shared Function getEquipListing()
    Dim equipType_Options As New List(Of String)
    Dim serializer As New JavaScriptSerializer
    Dim sqlConn As New SqlConnection
    Dim reader As SqlDataReader

    sqlConn.ConnectionString = ConfigurationManager.ConnectionStrings("ITSGinventory").ConnectionString

    Dim sqlCmd As New SqlCommand("SELECT DISTINCT(Equipment_Type) FROM tbl_Equipments ORDER BY Equipment_Type ASC", sqlConn)

    sqlConn.Open()

    reader = sqlCmd.ExecuteReader

    While reader.Read()
        equipType_Options.Add(reader("Equipment_Type"))
    End While

    sqlConn.Close()
    sqlConn.Dispose()

    Return serializer.Serialize(equipType_Options)
End Function

Веб-метод должен возвращать сериализованный список строк. Используя JQuery, он работает как задумано. Но мой родной подход AJAX возвращает строковую разметку HTML страницы. Я делаю это неправильно?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Я думаю, что вы можете использовать функцию извлечения с методом json для извлечения из http ответа. Хорошо объяснил, как использовать здесь . Например:

let response = await fetch(url);
if (response.ok) { // if HTTP-status is 200-299
  let json = await response.json();
} else {
  alert("HTTP-Error: " + response.status);
}
0 голосов
/ 05 марта 2020

Хорошо, так что после прочтения, исследования и переписывания моего кода я смог сделать эту работу. Мне нужно было только добавить xmlHttp.setRequestHeader('Content-Type', 'application/json'); и я смог получить ответ от моего WebMethod. LOL.

Всегда помните об этом при попытке вызвать / вызвать ASP. NET WebMethods с типом возврата JSON.

...