remove inside first div jquery ajax web-services .net-3.5

inside - Llamar al servicio web.Net con Jquery está causando desgracia cuando intentamos publicar datos



parents jquery (4)

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.

Cuando trato de configurar esto en datos: "{''name'': ''Niall'', ''surname'': ''Smith''}", aparece 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 a Jquery para publicar mis datos en el 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í está 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 la publicación de Dave Ward?

He intentado todo lo que puedo pensar. ¿Alguien tiene alguna idea?


Creo que el servicio web espera que se establezca el parámetro json . Pruebe esta llamada AJAX:

var data = {''name'':''niall''}; $.ajax({ type: "POST", url: "/WebServices/BasketServices.asmx/AddItemToBasket", data: "json=" + JSON.stringify(data), contentType: "application/json; charset=utf-8", dataType: "json", success: OnItemAddedSuccess });

donde JSON.stringify() es un método como el que se encuentra en la implementación "oficial": http://json.org/js.html


Esto debería funcionar. Debería pasar json como una cadena, con un nombre de parámetro ''json'' (que es lo mismo que el nombre del parámetro en su método web).

data: "{json: ''{/'name/':/'niall/'}''}",


Esto siempre me sucede cuando no envuelvo los datos de la cadena con comillas dobles


La solución anterior no funcionó para mí. Entonces, en cambio, hice lo siguiente. 1.) asegúrese de que las propiedades-objeto javascript (aquí Id. Y Cantidad) tienen el mismo nombre y el mismo tipo (en este caso número == int) que el parámetro de su servicio web 2.) no envuelve el objeto en un Objeto de Transferencia de Datos (DTO), pero en su lugar simplemente sóltelos Gracias a Yasin Tarim que dio las pistas que necesitaba para que funcione

// javascript object var cartItem = {"ID": 123, "Quantity": 2} $.ajax({ type: "POST", url: "/WebServices/BasketServices.asmx/AddItemToBasket", data: JSON.stringify(cartItem), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { OnSuccess(cartItem, data); }, });

// ASMX Server Side Code [WebMethod(Description = "Add item to ShoppingCart")] [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)] public string AddItemToBasket(int ID, int Quantity) { CartItem cI = new CartItem(); cI.iD = ID; cI.qty = Quantity; CartItem.SaveToDatabase(ci); return "foo from Webservice - it worked"; }