Lo que estoy tratando de hacer, Es llamar a WebMethod de aspx.vb, a Continuación es mi WebMethod sintaxis que se encuentra en mora.aspx.vb

<System.Web.Services.WebMethod()> _
<ScriptMethod(UseHttpGet:=True, ResponseFormat:=ResponseFormat.Json)> _
Public Shared Function dat( _
ByVal Id As Integer) As List(Of items)
    Dim eve As New List(Of items)()
    eve = (From row In getItems(Id).Rows
           Select New items With {
                                .Name = row("Name").ToString(),
                                .Description = row("Description").ToString(),
                                .ItemPic_url = row("ItemPic_url").ToString()}).ToList()
    Return eve
End Function

A continuación es mi jquery función de la que estoy llamando al método web:

Nota: Mi función Jquery es colocado en mi página maestra y estoy llamando desde el inicio Predeterminada.página aspx.

function getItems() {
$("#tbody").empty();
var id = $("select")[0].value;
$.ajax({
url: "Default.aspx/dat",
data: { Id: id },
contentType: "Application/json; charset=utf-8",
responseType: "json",
method: "POST",
success: function (response) {
$("#tbody").empty();
var rows = response.d;
var count = response.d.length;
var table = document.getElementById("tbody");
var row;
var cell;
for (var i = 0; i < rows.length; i++) {
if (i % 4 == 0) {
row = table.insertRow();
}
cell = row.insertCell();  //simply insert the row
cell.innerHTML = "<td><ul><li style='text-align:center;'><img id='imgload' width='190px'; height='166px' src='../Images/CatalogImgs/" + rows[i].ItemPic_url + "' alt='No Image Found' /></li><li style='margin:4px 6px;font-weight: 600;font-family: Calibri;font-size: 16px;'>" + rows[i].Name + "</li><li style='margin:4px 6px;color: #808080;font-weight: 600;'><p>" + rows[i].Description + "</p></li></ul></td>";
if (document.getElementById("tbody").rows[0].cells.length > 0)
{
//alert(document.getElementById("tbody").rows[0].cells.length);
switch (rows.length) {
case 1:
$("#tbody > tr > td").css('padding-left', '18%');
break;
case 2:
$("#tbody > tr > td").css('padding-left', '12%');
break;
case 3:
$("#tbody > tr > td").css('padding-left', '6%');
break;
default:
$("#tbody > tr > td").css('padding-left', '1%');
}
}
}
},
error: function (xhr) {
alert(xhr.status);
},
Failure: function (response) {
alert(response);
}
});
}

Problema: yo no soy de entrar en mi web de método. Tratando de depuración desde el navegador. Estoy recibiendo el error que se mencionan a continuación:

Web desconocido método de dat. 
Nombre de parámetro: methodName 
en el Sistema.Web.Secuencia de comandos.Servicios.WebServiceData.GetMethodData(Cadena methodName) 
en el Sistema.Web.Los controladores.ScriptModule.OnPostAcquireRequestState(Object sender, EventArgs eventArgs) 
en el Sistema.Web.HttpApplication.SyncEventExecutionStep.Sistema.Web.HttpApplication.IExecutionStep.Execute() 
en el Sistema.Web.HttpApplication.ExecuteStep(IExecutionStep paso, Boolean& completedSynchronously) 
  • Amablemente consulte este hilo. Tal vez su ayuda.

2 Comentarios

  1. 4

    Lo que estoy haciendo, está llamando WebMethod de aspx.vb.

    A continuación es mi WebMethod sintaxis que se encuentra en mora.aspx.vb:

    <System.Web.Services.WebMethod()> _
    <ScriptMethod(UseHttpGet:=True, ResponseFormat:=ResponseFormat.Json)> _

    También necesario añadir las siguientes importaciones:

    Imports System.Web.Services  
    Imports System.Web.Script.Services
  2. -1

    Este es un trabajo de código de C# para llamar al método web. Nota debe ser simple para convertir a VB.NET.

    MÉTODO WEB

     [WebMethod]
    public static string GetOnlineUserStatus()
    {
    JavaScriptSerializer jss = new JavaScriptSerializer();
    jss.MaxJsonLength = 100000000;
    string json;
    using (var rep = new RBZPOS_CSHARPEntities())
    {
    var result = rep.Users.Select(x => new
    {
    x.FULLNAME,
    ISONLINE = (x.ISONLINE == 1) ? "Online" : "Offline"
    }).OrderBy(x=>x.ISONLINE).ToList();
    json = jss.Serialize(result);
    }
    return json;
    }

    Lado Del Cliente

      <script>
    $(function () {
    $.ajax({
    type: "POST",
    url: "/WebMethods/Test.aspx/GetOnlineUserStatus",
    data: "{}",
    contentType: "application/json",
    dataType: "json",
    success: function (msg) {
    items = $.parseJSON(msg.d);                  //otherwise does not work
    var line;
    var cssColor;
    $('#sideBar').empty();                             //Remove all child Elements
    $.each(items, function (k, v) {
    if (v.ISONLINE == 'Online') {
    cssColor = 'style="color:green"';
    }
    else {
    cssColor = '';
    }
    line = "<li>" +
    "<a href='#'>" +
    "<div>" +
    "<i class='fa fa-user fa-fw' " + cssColor + "></i> " + v.FULLNAME +
    "<span class='pull-right text-muted small' " + cssColor + ">" + v.ISONLINE + "</span>" +
    "</div>" +
    "</a>" +
    "</li>"
    $("#sideBar").append(line);
    });
    },
    error: function (msg) {
    alert("error:" + JSON.stringify(msg));
    }
    });
    });
    </script>

    Estoy adivinando la razón de su método web no se ejecuta nunca es porque el ajax url no es correcto. Así, por ejemplo en mi caso, tengo una carpeta llamada WebMethods en el directorio raíz, que tiene una página web llamada de Prueba.aspx y método web ….

Dejar respuesta

Please enter your comment!
Please enter your name here