По какой-то причине я могу передавать строки, содержащие цифры, только моему веб-сервису при использовании jquery ajax. До сих пор это не было проблемой, потому что я всегда просто передавал идентификаторы своей службе wcf. Но сейчас я пытаюсь сделать что-то более сложное, но не могу понять.
В моем интерфейсе:
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
DataTableOutput GetDataTableOutput(string json);
Мой веб-сервис:
public DataTableOutput GetDataTableOutput(string json)
{
DataTableOutput x = new DataTableOutput();
x.iTotalDisplayRecords = 9;
x.iTotalRecords = 50;
x.sColumns = "1";
x.sEcho = "1";
x.aaData = null;
return x;
}
Javascript / Jquery:
var x = "1";
$.ajax({
type: "POST",
async: false,
url: "Services/Service1.svc/GetDataTableOutput",
contentType: "application/json; charset=utf-8",
data: x,
dataType: "json",
success: function (msg) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
//alert(XMLHttpRequest.status);
//alert(XMLHttpRequest.responseText);
}
});
Приведенный выше код работает отлично. Но когда я изменяю x на «t» или даже на «{'test': 'test'}", в Firebug появляется ошибка Error 400 Bad Request.
Спасибо,
John
EDIT:
Добиться определенного прогресса!
data: JSON.stringify ("{'test': 'test'}"),
Посылает строку в мою функцию!
EDIT2:
var jsonAOData = JSON.stringify(aoData);
$.ajax({
type: "POST",
async: false,
url: sSource,
contentType: "application/json; charset=utf-8",
data: "{'Input':" + jsonAOData + "}",
dataType: "json",
success: function (msg) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
//alert(XMLHttpRequest.status);
//alert(XMLHttpRequest.responseText);
}
});
EDIT3: я изменил кодовый блок, который я вставил в EDIT2 выше.
Обмен "и" сделал трюк!
$.ajax({
type: "POST",
async: false,
url: sSource,
contentType: "application/json; charset=utf-8",
data: '{"Input":' + jsonAOData + '}',
dataType: "json",
success: function (msg) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
//alert(XMLHttpRequest.status);
//alert(XMLHttpRequest.responseText);
}
});
Однако у меня появилась новая проблема:
public DataTableOutput GetDataTableOutput(DataTableInputOverview Input)
{
Ввод здесь абсолютно нулевой. Значения, которые я передал из jsonAOData, не были присвоены входной переменной DataTableInputOverview. (