2010-03-20 16 views
6

Estoy tratando de hacer algo que pensé que sería simple. Necesito crear un servicio WCF que pueda enviar a través de JQuery. Tengo una operación en mi servicio WCF que se define de la siguiente manera:WCF - "Caracteres inesperados encontrados 'c'."

[OperationContract] 
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json)] 
public string SendMessage(string message, int urgency) 
{ 
    try 
    { 
    // Do stuff 
    return "1"; // 1 represents success 
    } 
    catch (Exception) 
    { 
    return "0"; 
    } 
} 

entonces trato de acceder a esta operación desde una página ASP.NET a través de jQuery. Mi código jQuery para acceder a esta operación tiene el siguiente aspecto:

function sendMessage(message) { 
    $.ajax({ 
    url: "/resources/services/myService.svc/SendMessage", 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    data: ({ message: message, urgency: '1' }), 
    dataType: "json", 
    success: function (data) { 
     alert("here!"); 
    }, 
    error: function (req, msg, obj) { 
     alert("error: " + req.responseText); 
    } 
    }); 
} 

Cuando ejecuto este guión, el gestor de errores está disparado. En él, recibo un error que dice:

"Caracteres inesperados encontrados 'c'."

Este mensaje se incluye con un seguimiento de pila larga. Mi pregunta es, ¿qué estoy haciendo mal? He recibido otras publicaciones como esta (How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?) sin suerte. ¿Cómo hago para que funcione esta interacción básica?

¡Gracias!

+1

creo que está pasando parámetros de forma incorrecta. Eche un vistazo a la siguiente página: [3 errores que debe evitar al usar jQuery con ASP.NET AJAX] (http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery -with-aspnet-ajax /) – Giorgi

+0

Ese sitio no está disponible para mí en este momento, ¿qué dice? –

Respuesta

3

Creo que tiene que codificar sus datos json en la solicitud. Más información here. También es posible que desee analizar los datos de respuesta entrantes, ya que se codificarán a cambio. Se puede encontrar una biblioteca común adecuada para la tarea kan here.

Ej .: los datos: '{mensaje: "mensaje", urgencia: "1"}',

+0

Tuve el mismo problema y resulta que no debe pasar los datos en el método $ .ajax como un objeto json, sino más bien como una cadena. La respuesta de maets es perfecta. –

Cuestiones relacionadas