Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отправка текста через ajax (https://javascript.ru/forum/dom-window/69166-otpravka-teksta-cherez-ajax.html)

Янковиц 02.06.2017 16:34

Отправка текста через ajax
 
Добрый день.
Передаю текст из выделения в переменную:
if (window.getSelection) {
        text = window.getSelection();
    }else if (document.getSelection) {
        text = document.getSelection();
    }else if (document.selection) {
        text = document.selection.createRange().text;
    }

Отправляю данные через ajax:
jQuery('body').bind({
        copy:function(){
			jQuery.ajax({
				url: '/text.php',
				type: 'POST',
				data: { 'text': text }
        	});
        }
    });
});

если прописываю передачу данных так:
data: { 'text': 'text' } то срабатывает, передаёт, но только слово text, а если переменной:
data: { 'text': text }, то в консоли ошибка: Uncaught TypeError: Illegal invocation

В чем причина? Спасибо заранее.

Апд: Если перед jQuery.ajax({
вставляю alert(text);
выделенный текст выводит верно.

Dilettante_Pro 03.06.2017 10:52

Янковиц,
data: '{text:' + text + '}'
Или
data: 'text:' + text

Янковиц 05.06.2017 09:46

Попробовал оба варианта. Не работает:(

Dilettante_Pro 05.06.2017 11:03

Янковиц,
Тогда остается только
data: { 'text:' + text }

laimas 05.06.2017 11:31

Янковиц,
text = window.getSelection() - здесь text, это объект, а jQuery.ajax не сериализует его автоматически, поэтому и ошибка.

Янковиц 05.06.2017 12:00

Как мне её устранить?

laimas 05.06.2017 12:02

Посмотрите на свой код - для IE у вас возвращается текст, а для других объект. Здесь описание вашей проблемы.

Янковиц 05.06.2017 12:44

Прочитал, но мало что понял.
Получается, нужно window.getSelection преобразовать в текст. Делается это через toString();
???

Янковиц 05.06.2017 12:47

Все сработало :) Спасибо большое за наводки


Часовой пояс GMT +3, время: 12:16.