Получение ошибки при запуске простой веб - службы
Я построил очень простой веб-сервис на языке C# это серверный код
using MySql.Data; [WebService(Namespace = "http://www.example.org/", Description = "Example web service in C#")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] public class ExampleService : System.Web.Services.WebService { [WebMethod(Description = "Echos back a string")] [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)] public string echoString(String testString) { // An example of a pragma for throwing an exception for invalid input // NB: You will still get basic type error handling even if you don't do this! // "InputValidationException" is a commonly used pragma for input handling in .NET if (testString.Length < 1) throw new InputValidationException("The input string must be at least one character"); return testString; } }
Когда я получаю доступ к ExampleServics.asmx через веб-браузер, он работает нормально. Однако когда я пытаюсь получить доступ к нему через javascript с помощью приведенного ниже кода я получаю следующую ошибку
Данные на корневом уровне недопустимы. Линия 1, Позиция 1. Насколько я понимаю, это вызвано искаженным утверждением. Вот javascript для запроса
var str = 'POST /ExampleService.asmx HTTP/1.1 ' + 'Host: localhost ' + 'Content-Type: text/xml; charset=utf-8 ' + 'Content-Length: length ' + 'SOAPAction: "http://www.example.org/echoString" ' + '<?xml version="1.0" encoding="utf-8"?> ' + '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> ' + '<soap:Body> ' + '<echoString xmlns="http://www.example.org/"> ' + '<testString>test</testString> ' + '</echoString> ' + '</soap:Body> ' + '</soap:Envelope> '; var url = "http://apislot/ExampleService.asmx"; var soap_request = makeSoapRequest(url); var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.onreadystatechange = function() {//Call a function when the state changes. // Request finished. Do processing here. } xhr.send(str);
Что я уже пробовал:
Я уже несколько дней пытаюсь решить эту проблему, но ничего не получается. Я был по всему интернету, но все, что я нахожу, - это ссылки на плохой запрос, но я не могу найти ничего плохого в приведенном выше коде. Пожалуйста помочь.
ZurdoDev
Я бы предложил вместо этого использовать jQuery.ajax ().
dbarni
Большое спасибо. Я переключился на jQuery и теперь он работает нормально