Estoy totalmente puzzeled. Tengo un WebMethod que quiero llamar desde javascript. Bastante Simple, con jQuery, he hecho esto antes. Sin embargo, esta vez, me sale un error que dice que no me ofrecen el argumento para el WebMethod. Pero, en mi opinión, yo soy.

Tengo esto en mi código aspx-detrás:

<WebMethod(True)> _
<ScriptMethod(UseHttpGet:=True)> _
Public Shared Function GetTimes(ByVal input as String) As Object()
    Dim result As New List(Of Object)
    result.Add(New With {.Text = "5:30", .Value = "1"})
    result.Add(New With {.Text = "6:00", .Value = "2"})
    result.Add(New With {.Text = "6:30", .Value = "3"})
    result.Add(New With {.Text = "7:00", .Value = "4"})
    Return result.ToArray
End Function

Y esta en mi javascript:

$.ajax({
        url: 'ThePage.aspx/GetTimes',
        contentType: "application/json; charset=utf-8",
        data: '{"input":"test"}',
        dataType: 'json',
        succes: function (result) {
            alert('yep');
        },
        error: function (request, errorType, obj) {
            alert('nope');
        }
    });

Pero me sale el siguiente error:

No válido llamada de servicio web, la falta de valor para el parámetro: \u0027input\u0027.

El StackTrace incluye:

al Sistema.Web.Secuencia de comandos.Servicios.WebServiceMethodData.CallMethod(Objeto de destino, IDictionary’2 parámetros)
en el Sistema.Web.Secuencia de comandos.Servicios.WebServiceMethodData.CallMethodFromRawParams(Objeto de destino, IDictionary’2 parámetros)
en el Sistema.Web.Secuencia de comandos.Servicios.RestHandler.InvokeMethod(HttpContext contexto, WebServiceMethodData methodData, IDictionary`2 rawParams)
en el Sistema.Web.Secuencia de comandos.Servicios.RestHandler.ExecuteWebServiceCall(HttpContext contexto, WebServiceMethodData methodData)

ExceptionType: Sistema.InvalidOperationException

Nadie a visto esto antes?

InformationsquelleAutor Peter | 2011-06-28

2 Comentarios

  1. 5

    Parece que usted está haciendo en el sentido literal de objeto como cadena. Los datos deben ser {input:"test"} en lugar de '{"input":"test"}'

    Así la llamada correcta será

    $.ajax({
            url: 'ThePage.aspx/GetTimes',
            contentType: "application/json; charset=utf-8",
            data: {input:"test"},
            dataType: 'json',
            succes: function (result) {
                alert('yep');
            },
            error: function (request, errorType, obj) {
                alert('nope');
            }
        });
    • escribió exactamente la misma cosa que él hizo.
    • Se ha corregido la respuesta
  2. 0

    Terminamos usando AjaxPro, que no era el método preferido, ya que ya no está siendo desarrollado activamente. Además, no hay suficiente documentación.

    He probado la respuesta de mohang, pero tengo otro error. Estoy casi segura de que está relacionado con nuestro proyecto específico, porque incluso el código en mi pregunta trabajado en otro proyecto.

Dejar respuesta

Please enter your comment!
Please enter your name here