Я не могу потратить Веб услугу с jQuery; отвечает Requested page not found [404]

Это фрагмент webservice:

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)],   
[System.ComponentModel.ToolboxItem(false)], 
[System.Web.Script.Services.ScriptService])
public class ClientServei : System.Web.Services.WebService
{
    [WebMethod]
    public List<Client> GetClient()
    {
        List<Client> Listclient = new List<Client>();
        Listclient.Add(new Client() { Nombre = "OSCAR", Apellido = "PUIG", Edad = 30 });
        Listclient.Add(new Client() { Nombre = "JORDI", Apellido = "FERRER", Edad = 31 });
        Listclient.Add(new Client() { Nombre = "MIQUEL", Apellido = "MAR", Edad = 31 });

        return Listclient;
    }
}

И это функция click jQuery, который я использую, чтобы называть функцию AJAX:

$("#prova").click(function () {    
    $.ajax({
               url: "ClientServei.asmx/GetClient",
               data: "{}",
               dataType: "json",
               type: "POST",
               contentType: "application/json; charset=utf-8",
               success: function (data) {
               alert("success");
            },
            error: function (response) {
                alert("error");
            },
            failure: function (response) {
                 alert("arriva failure");
            }
      });
});

Я захватил ошибки в alert и получаю: "Requested page not found [404]".

Каковой может быть причина, который этот webservice не завершает правильно?

5
задан 05.01.2016, 09:16
4 ответа

Стой проблему дело в том, что он возвращал список прямо, вместо того, чтобы возвращать json и она funciГіn ajax он это не распознавал. AquГ - я оставляю ее soluciГіn:

public List<Client> GetClient()
{
    List<Client> Listclient = new List<Client>();
    Listclient.Add(new Client() { Nombre = "OSCAR", Apellido = "PUIG", Edad = 30 });
    Listclient.Add(new Client() { Nombre = "JORDI", Apellido = "FERRER", Edad = 31 });
    Listclient.Add(new Client() { Nombre = "MIQUEL", Apellido = "MAR", Edad = 31 });

    JavaScriptSerializer jss = new JavaScriptSerializer();

        string resultat_Json = jss.Serialize(Listclient);

        return resultat_Json;
}
2
ответ дан 24.11.2019, 15:02

"Requested page not found [404]" достаточно ясный немного эта плохо в унифицированном указателе ресурса или нет доступа к той же самой, пробует используя полный url в призыве к услуге

$("#prova").click(function () {

            $.ajax({
                url: "http://www.myservice.com/ClientServei.asmx/GetClient",
                data: "{}",
                dataType: "json",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    alert("success");
                },
                error: function (response) {
                    alert("error");
                },
                failure: function (response) {
                    alert("arriva failure");
                }
            });
    });

Убедись имения этого / или сходно согласно версии / в web.config.

<configuration>
    ...
    <system.web>
        ...
        <httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" validate="false" 
                 type="System.Web.Script.Services.ScriptHandlerFactory, 
                       System.Web.Extensions, Version=1.0.61025.0, 
                       Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            ...
        </httpHandlers>
        ...
    </system.web>
    ...
<configuration>

Также ты должен проверять лучше ошибки, alert не является очень хорошим для этого, в Вашем месте так в failure как в error он использует output browser, чтобы проверять данные в большей детали, он больше размещает там breakpoint с browser и рассматривает объект response, чтобы получать всю информацию, которая возможная относительно ошибки.

console.log(response.);
4
ответ дан 24.11.2019, 15:02

Шавьер, сначала, что все подтверждать, что ты считаешь совокупным file Jquery в твоем html.

 <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>

Потом, поскольку я вижу этих работая с C#, и добавив файл webServices, тебя создает назначенный по умолчанию код.

/// <summary>
/// Descripción breve de WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Para permitir que se llame a este servicio Web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
//[System.Web.Script.Services.ScriptService]

Если ты сосредотачиваешься на последней линии ScriptService, он приходит прокомментированная по умолчанию для функционирования этого через вызов JS, необходимо снимать комментарий. Таким образом, мы показываем, что класс содержит услуги, которые будут соглашены с клиента используя scripting (javascript).

Тогда в конце концов это быть должный оставаться так:

/// <summary>
/// Descripción breve de WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Para permitir que se llame a este servicio Web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
[System.Web.Script.Services.ScriptService]

Протестируй это, потому что вызов ajax правилен.

1
ответ дан 24.11.2019, 15:02
  • 1
    Спасибо за отвечание @MBahamondes, уже у него была эта линия, не комментируя. – Xavier 24.12.2015, 16:40
  • 2
    что редкий @Xavier, потому что как ты coment и # 233; я сделал проект с тобой самими c и # 243; я говорю, так Jquery как c #, и я функция и # 243; правильно, у тебя есть c и # 243; говорит Button, что ты называешь $ (" #prova")?? – MBahamondes 24.12.2015, 16:44
  • 3
    Я не думаю, что он имеет ничего общего с button, так как, если я призываю ajax, ты дал например " $ (document) .ready (function () {" происходит то же самое. – Xavier 24.12.2015, 16:48

Ошибка, которую он показывает тебе, принадлежит, что не находит mГ©todo GetCliente. Если у тебя есть ClientServei.asmx/GetClient внутри папки проекта (в другом уровне каталога) тогда попробуй размещать это так:

url: "/carpeta/ClientServei.asmx/GetClient"
1
ответ дан 24.11.2019, 15:02