Недопустимый вызов веб-службы, отсутствует значение параметра, но я включаю его в вызов - PullRequest
2 голосов
/ 28 июня 2011

Я полностью озадачен. У меня есть WebMethod, который я хочу позвонить из JavaScript. Достаточно просто, с JQuery, я делал это раньше. Однако на этот раз я получаю сообщение об ошибке, в котором говорится, что я не предоставил аргумент для WebMethod. Но по-моему, я.

У меня есть это в моем коде aspx:

<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

И это в моем 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');
        }
    });

Все же я получаю следующую ошибку:

Недопустимый вызов веб-службы, отсутствует значение параметра: \ u0027input \ u0027.

StackTrace включено:

в System.Web.Script.Services.WebServiceMethodData.CallMethod (Цель объекта, параметры IDictionary'2) в System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams (цель объекта, параметры IDictionary'2) в System.Web.Script.Services.RestHandler.InvokeMethod (контекст HttpContext, метод WebServiceMethodDataData, IDictionary`2 rawParams) в System.Web.Script.Services.RestHandler.ExecuteWebServiceCall (контекст HttpContext, метод WebServiceMethodData methodData)

ExceptionType: System.InvalidOperationException

Кто-нибудь видел это раньше?

Ответы [ 2 ]

5 голосов
/ 28 июня 2011

Вы, кажется, делаете буквальный объект в виде строки. Данные должны быть {input:"test"} вместо '{"input":"test"}'

Таким образом, правильный вызов будет

$.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');
        }
    });
0 голосов
/ 12 июля 2011

В итоге мы использовали AjaxPro, который не был предпочтительным методом, потому что он больше не разрабатывался активно.Кроме того, недостаточно документации.

Я попробовал ответить от Моханга, но получил еще одну ошибку.Я почти уверен, что это связано с нашим конкретным проектом, потому что даже код в моем вопросе работал в другом проекте.

...