válido primitivo nombre invalid web-services jquery asmx

web services - primitivo - Primitiva JSON inválida: id



primitivo json no (2)

Resolví este problema ahora mismo.

Necesita pasar la url en este formato:

http://domain.com.br/service.asmx/method?objParam= {q: "search"}

Y en su archivo service.asmx, necesita declarar este método:

Public Function method(objParam As Dictionary(Of String, String)) End Function

En tu código, se ve así:

function getVentID(id) { var jsdata = { "id": +id } var sData = JSON.stringify(jsdata); //convert your json in string $.ajax({ type: ''POST'', contentType: ''application/json; charset=utf-8'', url: ''services/UserService.asmx/getVentID'', data: { id: sData }, dataType: ''json'', success: function(msg) { alert(msg.d); }, error: function(a, b, c) { alert(''Error: '' + a.toString() + '' '' + b.toString() + " " + c.toString()); } }); }

No puedo obtener la siguiente función para que funcione correctamente. Parece estar serializando mal. Esta es la quinta iteración de diferentes variantes de datos. Originalmente estaba haciendo datos: {''id'': id} como lo hago en el trabajo con WCF, pero con ASMX simplemente no funciona. Parece que está serializando los datos como id = 1234 en lugar de id: 1234, pero soy bastante nuevo en esto. Cualquier ayuda sería apreciada. Ah, y puedo llamar al servicio directamente en el navegador y devuelve los datos correctamente para que sepa que no es el servicio.

function getVentID(id) { //look up id in database and get VentID alert(''id: '' + id); var jsdata = { "id": + id} $.ajax({ type: ''POST'', contentType: ''application/json; charset=utf-8'', url: ''services/UserService.asmx/getVentID'', data: jsdata, dataType: ''json'', success: function (msg) { alert(msg.d); }, error: function (a, b, c) { alert(''Error: '' + a.toString() + '' '' + b.toString() + " " + c.toString()); } }); }

ps Sé que hay como 10 preguntas idénticas pero ninguna de ellas tiene respuestas que pude encontrar o que funcionó para mí.


La solución más simple posible sería cambiar la línea que comienza var jsdata a:

var jsdata = ''{id:'' + id + ''}'';

El problema es que jQuery está codificando jsdata como datos de formulario, no como json. El parámetro dataType influye en cómo se analiza la respuesta, no cómo se codifican los datos POST.

En realidad, no hay ningún código de serialización JSON en jQuery, según mi leal saber y entender. Aparentemente, John Resig sugiere usar json2.js de Douglas Crockford .

Para usarlo, agregue una referencia de script a json.js y luego:

var jstext = JSON.stringify(jsdata, null, 2);