2010-04-25 4 views
0

J'ai un service WCF qui accepte les requêtes de JQuery. Actuellement, je peux accéder à ce service. Cependant, la valeur du paramètre est toujours nulle. Voici ma WCF Définition du service:JQuery et WCF - méthode GET passe null

[OperationContract] 
[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
public string ExecuteQuery(string query) 
{ 
    // NOTE: I get here, but the query parameter is always null 
    string results = Engine.ExecuteQuery(query); 
    return results; 
} 

Voici mon appel JQuery:

var searchUrl = "/services/myService.svc/ExecuteQuery"; 
var json = { "query": eval("\"test query\"") }; 
alert(json2string(json)); // Everything is correct here 

if (json != null) { 
    $.ajax({ 
    type: "GET", 
    url: searchUrl, 
    contentType: "application/json; charset=utf-8", 
    data: json2string(json), 
    dataType: "json" 
    }); 
} 

Qu'est-ce que je fais mal? Il semble étrange que je puisse appeler le service mais le paramètre est toujours nul. Merci

Répondre

3

Que fait le json2string et pourquoi utilisez-vous eval? Votre fonction ExecuteQuery prend un paramètre de chaîne unique nommé query qui peut être passé comme suit:

$.ajax({ 
    url: searchUrl, 
    contentType: 'application/json; charset=utf-8', 
    data: { query: 'this is the query that will be sent to the service' }, 
    success: function(json) { 
     // json.d will contain the string result returned by the web method 
     alert(json.d); 
    } 
});