2010-03-20 4 views
6

J'essaie de faire quelque chose que je pensais être simple. J'ai besoin de créer un service WCF que je peux publier via JQuery. J'ai une opération dans mon service WCF qui est défini comme suit:WCF - "Caractère inattendu" 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"; 
    } 
} 

J'essaie ensuite d'accéder à cette opération à partir d'une page ASP.NET via JQuery. Mon code JQuery pour accéder à cette opération se présente comme suit:

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); 
    } 
    }); 
} 

Lorsque j'exécute ce script, le gestionnaire d'erreur est déclenché. Dans celui-ci, je reçois une erreur qui indique:

"Caractère inattendu" c "."

Ce message est inclus avec une trace de pile longue. Ma question est, qu'est-ce que je fais mal? J'ai reçu d'autres messages comme celui-ci (How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?) sans aucune chance. Comment puis-je faire fonctionner cette interaction de base?

Merci!

+1

Je pense que vous passez correctement les paramètres. Jetez un oeil à la page suivante: [3 erreurs à éviter lors de l'utilisation de jQuery avec ASP.NET AJAX] (http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery -with-aspnet-ajax /) – Giorgi

+0

Ce site est inaccessible pour moi en ce moment - qu'a-t-il dit? –

Répondre

3

Je pense que vous devez stringifier vos données json dans la requête. Plus d'info here. Vous pouvez également vouloir analyser les données de réponse entrantes, car elles seront codifiées en retour. Une bibliothèque commune adaptée à la tâche peut être trouvée here.

Ex .: données: '{message: "message", urgence: "1"},

+0

J'ai eu ce même problème et il s'avère que vous ne devriez pas passer les données dans la méthode $ .ajax en tant qu'objet json mais plutôt en tant que chaîne .. la réponse de maets est sur place. –