El siguiente código se ejecuta correctamente cuando la clave de datos no tiene datos para enviar, es decir, datos: "{}" un objeto JSON vacío y el servicio web no toma parámetros. Me gustaría publicar algunos datos en el servicio web, pero me estoy metiendo en problemas.Llamar .Net webservice con Jquery está causando desgracia al tratar de publicar datos
Cuando intento configurar esto a los datos: "{ 'nombre': 'Niall', 'nombre': 'Smith'}", me sale un error
{"Message":"Invalid web service call, missing value for parameter: \u0027json\u0027.","StackTrace":" at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}
El servicio web no se ejecuta.
Esta es mi llamada Jquery para volver a enviar mis datos al servidor.
$.ajax({
type: "POST",
url: "/WebServices/BasketServices.asmx/AddItemToBasket",
data: "{'name':'niall'}", // Is this Correct??
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnItemAddedSuccess
});
function OnItemAddedSuccess(result,eventArgs) {
//deserialize the JSON and use it to update the Mini Basket
var response = JSON.parse(result.d);
}
aquí es mi WebService
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class BasketServices : System.Web.Services.WebService
{
[WebMethod(true)]
public string AddItemToBasket(string json)
{
//do stuff
return myString.toJSON();
}
}
Cuál podría ser el problema? ¿Es el formato de los datos JSON para publicar? Podría ser que no haya configurado los Atributos correctos en mi WebService. ¿Qué pasa con los problemas aludidos en Dave Ward's post
He intentado todo lo que se me ocurre. ¿Alguien tiene alguna idea?
+1, esto me ayudó a superar mi problema. Dado que espera que json sea una cadena y no un tipo complejo en el servicio, en realidad debería ser 'var data = {'json': 'niall'};' seguido de 'data: JSON.stringify (data),' luego . – DougJones