Tengo un método web simple y una llamada ajax y continúo recibiendo un error que dice que no puede convertir una cadena a un objeto IDictionary ???Pasando el parámetro a WebMethod con jQuery Ajax
Aquí está la llamada AJAX:
var params = '{"ID":"' + rowid + '"}';
$.ajax({
url: 'EDI.asmx/GetPartnerDetails',
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(params),
dataType: "json", //not json . let me try to parse
success: function(msg, st) { . . . .
Aquí es el webMethod:
<WebMethod()> _
Public Function GetPartnerDetails(ByVal ID As String) As String
'Dim objParam As IDictionary = CType(JsonConvert.DeserializeObject(ID), IDictionary)
'Dim rowID As String = objParam("ID")
Dim objController As New HealthComp.BLL.X12Partners.TradingPartnersController
Dim objInfo As TradingPartnersInfo = objController.FetchByPartnerID(Int32.Parse(ID))
Return JsonConvert.SerializeObject(objInfo)
End Function
Esto es lo que veo de FireBug:
encabezados de respuesta
Servidor: Microsoft-IIS /5.1
Fecha: Jue, 09 de Abr 2009 21:43:59 GMT
jsonerror: true
Cache-Control: privado
Content-Type: application/json; charset = UTF-8
Content-Length: 1331
mensaje: "{\" ID \ ": \" 4 \ "}"
RESPUESTA:
{ "mensaje": "No se puede convertir objeto de tipo \ u0027System.String \ u0027 para escribir \ u0027System.Collections .Generic.IDictionary`2 [System.String, System.Object] \ u0027 "," StackTrace ":" en System.Web.Script.Serialization .ObjectConverter.ConvertObjectToTypeInternal (Object o, Type type, serializador de JavaScriptSerializer, Boolean throwOnError, Object & convertedObject) \ r \ n en System.Web.Scri pt.Serialization.ObjectConverter.ConvertObjectToTypeMain (Object o, Tipo Tipo, JavaScriptSerializer serializador, Boolean throwOnError, objeto & convertedObject ) \ r \ n en System.Web.Script.Serialization.ObjectConverter.ConvertObjectToType (Object o, Tipo Tipo, JavaScriptSerializer serializador) \ r \ n en System.Web.Script.Serialization.JavaScriptSerializer.Deserialize (serializador de JavaScriptSerializer , entrada de cadena, tipo de tipo, profundidad de profundidad Int32) \ r \ n en System.Web.Script.Serialization.JavaScriptSerializer .Deserialize [T] (Entrada de cadena) \ r \ n en System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest (contexto de HttpContext, serializador de JavaScriptSerializer) \ r \ n en System.Web.Script.Services.RestHandler .GetRawParams (WebServiceMethodData métodoD ATA, HttpContext contexto) \ r \ n en System.Web.Script.Services .RestHandler.ExecuteWebServiceCall (contexto HttpContext, WebServiceMethodData methodData)", "ExceptionType" : "System.InvalidOperationException"}
Alguien tiene alguna idea ¿sobre esto? ¡¡Gracias!!
Eres el hombre. ¡Muchas gracias, Chris! Agregué esto: var jsonText = JSON.stringify ({ID: rowid}); después de leer tu artículo. He leído un montón de artículos que muestran los parámetros que pasan con comillas. La tuya es la primera que he leído y explicada Y FIJA. Mucho gracias! –
Me alegro de haber ayudado. –