невозможно использовать ajax для вызова веб-сервера для получения возвращаемого результата в .net c#

#c# #jquery #.net #ajax

#c# #jquery #.net #ajax

Вопрос:

Я пытался использовать следующий код для извлечения данных с веб-сервера (test.asmx.cs), но почему-то это всегда выдает мне ошибку … кто-нибудь знает, что происходит не так?

     using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;

namespace Test
{
    /// <summary>
    /// Summary description for autocomplete
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class autocomplete : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public static string streetNameSearch(int id)
        {

            return "Melbourne|North Melbourne|South Melbourne|Richmond|North Richmond";
        }
    }
}
  

И следующий код jquery был размещен в pgTest.aspx

 $("#example").keyup(function () {
    $.ajax({
        type: "POST",
        url: "pgTest.aspx/streetNameSearch",
        data: '{"id":"'   1   '"}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            var returnData = data.d;
            alert(returnData)

    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(ajaxOptions);
    },
    timeout: function (data) {
        alert("time out");
    }
});
});
  

введите описание изображения здесь

Комментарии:

1. Что за ошибка выдается?

2. @jon3laze: ошибка — это просто «error»,

3. установите точку останова в вашем методе streetNameSearch и проверьте, вызван ли он?

4. @jayantha, это перешло к части ошибки и даже не удалось вызвать метод streetNameSearch

Ответ №1:

Раскомментируйте эту строку:

 // [System.Web.Script.Services.ScriptService]
  

Атрибут ScriptService позволяет всем методам службы ASMX отвечать необработанным JSON.

Ответ №2:

Помимо раскомментирования ScriptService строки, почему ваш $.ajax() метод нацелен на ASPX-путь, в то время как опубликованный вами код взят из службы ASMX? Это определенно может вызвать проблему.

Ответ №3:

Попробуйте это

      public static JsonResult streetNameSearch(string id)
        {

            return Json("Melbourne|North Melbourne|South Melbourne|Richmond|North Richmond");
        }
  

И в вашем javascript измените следующим образом

 data: {id:"1"}
  

Комментарии:

1. @Jayanthan: похоже, что JsonResult и Json () не поддерживаются в веб-сервисе .net c #