У меня есть два разных асин c звонка, которые я делаю с ajax. Оба выполняются одинаково, но у одного есть параметры для веб-метода. Ссылка верна, когда я перехожу по ней, я правильно получаю возврат в браузере, но я просто продолжаю получать ошибку 500 сервера. Любые идеи? Один работает без параметров, вот код JS / jQuery, так как я немного уверен, что он не на стороне C#:
function CatChanged() {
var strA = $('#ddlCategory').val();
$.ajax({
url: encodeURI('https://localhost:44380/WebService1.asmx/GetProducts?category=' + strA),
data: '<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/%22%3E<soap: Body><xmlns="http://tempuri.org/" /></soap: Body></soap: Envelope >',
type: 'POST',
contentType: "text/xml",
dataType: "text/xml",
success: function (response) {
alert(response.responseText);
},
error: function (xhr, ajaxOptions, thrownError) {
alert("ERROR!!");
alert(xhr.status);
alert(thrownError);
}
});
}
Вот код веб-метода из C# код позади:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string GetCategories()
{
Catalog cat = new Catalog();
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Serialize(cat.categories);
}
[WebMethod]
public string GetProducts(string category)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
Catalog cat = new Catalog();
List<string> retList = new List<string>();
switch (category)
{
case "Electronics":
foreach (Product product in cat.electronicProducts)
{
retList.Add(product.itemName);
}
return jss.Serialize(retList);
case "Apparel":
foreach (Product product in cat.apparelProducts)
{
retList.Add(product.itemName);
}
return jss.Serialize(retList);
case "Food and Drink":
foreach (Product product in cat.electronicProducts)
{
retList.Add(product.itemName);
}
return jss.Serialize(retList);
default:
foreach (Product product in cat.electronicProducts)
{
retList.Add(product.itemName);
}
return jss.Serialize(retList);
}
}
... Вот скриншот возврата, который я получаю в браузере, когда перехожу по прямой ссылке из консоли разработчика в Chrome:
Возврат все хорошо из веб-метода при вызове из URL. Это заставляет меня думать, что это должно быть что-то в вызове ajax, и я не уверен, что мне нужно делать по-другому, чтобы использовать его при добавлении параметра в веб-метод. Как я уже сказал, первый веб-метод работает в моем JavaScript коде, и я смог отлично проанализировать все из возврата.
Кроме того, используя любые другие сервисы, MVC или что-то подобное не вариант Я должен заставить это работать, учитывая текущую ситуацию.