Ungültige web-service-Aufruf, fehlende Wert für den parameter, aber ich bin auch es in dem Aufruf
Ich bin Total puzzeled. Ich hab eine WebMethod, dass ich in javascript aufrufen möchten. Einfach genug, mit jQuery, ich habe dies getan, bevor. Doch dieses mal, bekomme ich die Fehlermeldung, die ich nicht das argument für die WebMethod. Aber meiner Meinung nach, ich bin.
Habe ich in meiner aspx-code-behind:
<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
Und diese in meine 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');
}
});
Aber ich bekomme die folgende Fehlermeldung:
Ungültige web-service-Aufruf, fehlender Wert für parameter: \u0027input\u0027.
Den StackTrace enthalten ist:
System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary'2 parameters)
System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary'2 parameters)
System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext-Kontext, WebServiceMethodData methodData, IDictionary`2 rawParams)
System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext-Kontext, WebServiceMethodData methodData)ExceptionType: System.InvalidOperationException
Jemand das schon mal gesehen?
data: '{"input":"test"}'
sollte data: ({"input":"test"})
oder das format wird als query-string. Mehr info hier: http://api.jquery.com/jQuery.ajax/InformationsquelleAutor Peter | 2011-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheinen Sie die literal-Objekt als string. Die Daten sollten
{input:"test"}
statt'{"input":"test"}'
So der korrekte Aufruf werden
Korrigiert die Antwort
InformationsquelleAutor Mohan Gundlapalli
Wir landeten mit AjaxPro, das war nicht die bevorzugte Methode, weil es nicht mehr aktiv weiterentwickelt. Plus, es gibt nicht genug Dokumentation.
Ich habe versucht, die Antwort von mohang, bekam aber ein anderer Fehler. Ich bin mir fast sicher, dass er in Bezug auf unser konkretes Projekt, weil auch der code in meiner Frage war in einem anderen Projekt.
InformationsquelleAutor Peter