У меня есть простая веб-служба ASP.NET
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
public Service () {
}
[WebMethod]
public string SetName(string name) {
return "hello my dear friend " + name;
}
}
Для этой веб-службы я создал виртуальный каталог, чтобы получить доступ, нажав
http://localhost:89/Service.asmx.
Я пытаюсь вызвать его через простую html-страницу с помощью jQuery. Для этого я использую функцию
CallWS() {
$.ajax({
type: "POST",
data: "{'name':'Pumba'}",
dataType: "json",
url: "http://localhost:89/Service.asmx/SetName",
contentType: "application/json; charset=utf-8",
success: function (msg) {
$('#DIVid').html(msg.d);
},
error: function (e) {
$('#DIVid').html("Error");
}
});
Самый интересный факт: если я создаю html-страницу в проекте с помощью моего WebService и меняю URL на Service.asmx / SetName, все работает отлично.
Но если я попытаюсь вызвать этот веб-сервис удаленно - функция успеха будет работать, но msg будет нулевым.
После этого я попытался вызвать этот сервис даже через SOAP. То же самое - локально работает отлично, но удаленно - совсем нет.
var ServiceUrl = 'http://localhost:89/Service.asmx?op=SetName';
function beginSetName(Name) {
var soapMessage = '<?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> <SetName xmlns="http://tempuri.org/"> <name>' + Name + '</name> </SetName> </soap:Body> </soap:Envelope>';
$.ajax({
url: ServiceUrl,
type: "POST",
dataType: "xml",
data: soapMessage,
complete: endSetName,
contentType: "text/xml; charset=\"utf-8\""
});
return false;
}
function endSetName(xmlHttpRequest, status)
{
$(xmlHttpRequest.responseXML)
.find('SetNameResult')
.each(function () {
var name = $(this).text();
alert(name);
});
}
В этом случае статус имеет значение «parseerror».
Не могли бы вы помочь мне решить эту проблему? Что я должен сделать для удаленного вызова другого WebService по URL через jQuery.
Заранее спасибо,
Грег