Я пытаюсь написать веб-сервис ASP.net, который будет использоваться вызовом jQuery AJAX.
Я абсолютно в своем уме, пытаясь заставить это работать. Я видел несколько похожих вопросов в Интернете, но мне не удалось найти подходящее решение.
Когда я пытаюсь выполнить вызов ajax (через jquery), я получаю успешный ответ от сервера, но запрос не выполняется из-за ошибки синтаксического анализатора.
Я проверил json, возвращенный веб-сервисом, и он действителен. Кажется, проблема связана с тем, что asp.net возвращает объект json как xml.
Я указал тип возвращаемого значения как json, используя
<Script.Services.ScriptMethod(responseFormat:=Script.Services.ResponseFormat.Json)> _
Я добавил следующий обработчик http, поскольку он упоминался как потенциальное исправление
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory" validate="false"/>
</httpHandlers>
Тип содержимого установлен в "application / json; charset = utf-8" и dataType в "json" в моей настройке jquery ajax. Тип запроса, кажется, правильный, но ответ всегда xml.
Я могу успешно выполнить запрос, удалив dataType, но очень хотел бы избежать использования eval для десериализации данных.
Если у кого-нибудь есть предложения, я буду очень признателен. Я несколько дней тянул за это волосы.
JAVASCRIPT
(function($) {
$.ajaxSetup({
type: "POST",
contentType: "application/json; charset=utf-8",
global: false,
dataType: "json"
});
function auto() { console.log("test"); return; };
$.fn.species = {
test: function() { alert("test"); },
load: function() { //load and attach species list to element as dropdown
$.ajax({
url: "SpeciesService.asmx/List",
success: function(msg) { console.log(msg); },
error: function (xhr, desc, exceptionobj) {
console.log(xhr.responseText);
console.log(desc);
console.log(exceptionobj);
}
});
return this;
}
}; //Species Block
* * 1 022}) (Jquery); // Блок псевдонимов jQuery
ASP.NET Webservice
<%@ WebService Language="VB" Class="SpeciesService" %>
Импорт System.Web
Импортирует System.Web.Services
Импортирует System.Web.Services.Protocols
Виды импорта
Импортирует System.Runtime.Serialization
'Чтобы разрешить вызов этой веб-службы из сценария с использованием ASP.NET AJAX, раскомментируйте следующую строку.
'_
_
_
Public Class SpeciesService
Inherits System.Web.Services.WebService
<WebMethod()> _
<Script.Services.ScriptMethod(responseFormat:=Script.Services.ResponseFormat.Json)> _
Public Function Data(ByVal id As Integer) As String
Dim curSpecies As New Species(id)
Return curSpecies.serialize
End Function
<WebMethod()> _
<Script.Services.ScriptMethod(responseFormat:=Script.Services.ResponseFormat.Json)> _
Public Function List() As String
Return Species.list()
End Function
Конечный класс