Отправка строки в сервис wcf с использованием jquery ajax.почему я могу отправлять только строки чисел? - PullRequest
2 голосов
/ 11 марта 2011

По какой-то причине я могу передавать строки, содержащие цифры, только моему веб-сервису при использовании 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);
                        }
                    });

enter image description here

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. (

1 Ответ

0 голосов
/ 12 марта 2011

Я изменил кодовый блок, который я вставил в 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);
                        }
                    });

Это на самом деле сработало, но мне пришлось исправить формат объекта, который я отправлял в GetDataTableOutputOverview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...