JQuery и WCF - метод GET пропускает ноль - PullRequest
0 голосов
/ 25 апреля 2010

У меня есть служба WCF, которая принимает запросы от JQuery. В настоящее время я могу получить доступ к этой услуге. Однако значение параметра всегда равно нулю. Вот мое определение службы WCF:

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

Вот мой вызов 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"
  });
}

Что я делаю не так? Кажется странным, что я могу вызвать службу, но параметр всегда равен нулю. Спасибо

1 Ответ

3 голосов
/ 25 апреля 2010

Что делает json2string и почему вы используете eval? Ваша ExecuteQuery функция принимает один строковый параметр с именем query, который можно передать следующим образом:

$.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);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...