Как отправить большой текст в AJAX-запросе с использованием прототипа? - PullRequest
0 голосов
/ 30 июня 2010

У меня есть ситуация, когда я должен отправить большой текст в запросе ajax, используя метод: POST. Я пытался сделать так.

 new Ajax.Request(url + "?" + params, {
                method: 'post',postBody: {'Test':'Test'}, onSuccess: function (transport) {
                    switch (transport.responseJSON.Status) {
                        case "Success":
                            // alert(transport.responseJSON.Message);
                            var imgDiv = document.getElementById(control);
                            imgDiv.style.display = 'none';
                            break;
                        case "Failed":
                            alert(transport.responseJSON.Message);
                            break;
                        case "NotAuthorized":
                            alert(transport.responseJSON.Message);
                            break;
                        case "LoginRequired":
                            window.location = transport.responseJSON.RedirectAfterLogin;
                            break;

                    }

                }
            });   

Тест в теле сообщения будет заменен большим текстом из текстовой области. Но когда я пытаюсь получить доступ к нему на сервере, как это

string test = context.Request["Test"]; 

Я получаю ноль. Любое решение ссылка на пример? Спасибо

Ответы [ 2 ]

2 голосов
/ 30 июня 2010

Запись

postbody:'Test=Test'

вместо

postbody: {'Test':'Test'}

Поскольку текст большой, используйте функцию escape(), чтобы безопасно передавать его на сервер.Также убедитесь, что строка запроса и параметры тела сообщения не конфликтуют друг с другом.

1 голос
/ 30 июня 2010

postBody, как ожидается, будет парой имя / значение, подобной этой:

postbody:'Test=Test'

Вам также необходимо добавить evalJSON = true, если вы хотите использовать responseJSON, предполагая, что ваш возвращаемый тип контента на самом деле JSON

...