Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.06.2017, 16:34
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Отправка текста через 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);
выделенный текст выводит верно.

Последний раз редактировалось Янковиц, 02.06.2017 в 16:43.
Ответить с цитированием
  #2 (permalink)  
Старый 03.06.2017, 10:52
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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

Последний раз редактировалось Dilettante_Pro, 03.06.2017 в 10:55.
Ответить с цитированием
  #3 (permalink)  
Старый 05.06.2017, 09:46
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Попробовал оба варианта. Не работает
Ответить с цитированием
  #4 (permalink)  
Старый 05.06.2017, 11:03
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Янковиц,
Тогда остается только
data: { 'text:' + text }
Ответить с цитированием
  #5 (permalink)  
Старый 05.06.2017, 11:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Янковиц,
text = window.getSelection() - здесь text, это объект, а jQuery.ajax не сериализует его автоматически, поэтому и ошибка.
Ответить с цитированием
  #6 (permalink)  
Старый 05.06.2017, 12:00
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Как мне её устранить?
Ответить с цитированием
  #7 (permalink)  
Старый 05.06.2017, 12:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Посмотрите на свой код - для IE у вас возвращается текст, а для других объект. Здесь описание вашей проблемы.
Ответить с цитированием
  #8 (permalink)  
Старый 05.06.2017, 12:44
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Прочитал, но мало что понял.
Получается, нужно window.getSelection преобразовать в текст. Делается это через toString();
???
Ответить с цитированием
  #9 (permalink)  
Старый 05.06.2017, 12:47
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Все сработало Спасибо большое за наводки
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отправка формы через ajax на разные email Smike AJAX и COMET 7 12.11.2014 08:58
Отправка значений в БД через AJAX Batyabest AJAX и COMET 1 13.10.2014 09:25
Передать параметры через HREF в AJAX izcian Общие вопросы Javascript 5 18.08.2012 20:04
Автоматическая работа script в подгруженном через AJAX div'e rost Javascript под браузер 4 06.07.2012 21:24
Послать форму загруженную через ajax в div используя ajax ncux jQuery 2 16.08.2010 17:36