 
			
				01.10.2013, 09:32
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.10.2009 
					
					
					
						Сообщений: 57
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Не работает AJAX если есть перевод строки
			 
			
		
		
		
		Добрый день! 
Столкнулся с проблемой: 
Если в textarea (name=text) содержится текст, в котором есть автоматический перевод на новую строку, который появился из-за того, что не хватило ширины поля ввода, то AJAX запрос не уходит на сервер. 
Если перевод строки сделать путем нажатия на enter? все работает.
 
Подскажите в чем ошибка и как исправить. 
Заранее спасибо.
 
$.ajax(
    {
    type: "POST",
 	data: "name=" + $("#name").val() + "&email=" + $("#email").val()
    	+ "&text=" + $("#text").val(),
    url: "/sendmail.php",
    success: function(data)
        {
        alert("Ваше сообщение отправлено на ящик - " + data);
        document.getElementById("parent_popup").style.display="none";
        $("#text").val("");
        }
    });
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2013, 10:18
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Очень сомнительно. Браузер какой? Версия? Демонстрация? 
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2013, 11:08
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.03.2012 
					
					
					
						Сообщений: 376
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
$.ajax({
    type: "POST",
    data: {
        name: $("#name").val(),
        email: $("#email").val(),
        text: $("#text").val()
    },
    url: "/sendmail.php",
    success: function (data) {
        alert("Ваше сообщение отправлено на ящик - " + data);
        $("#parent_popup").hide();
        $("#text").val("");
    }
});
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2013, 12:14
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.10.2009 
					
					
					
						Сообщений: 57
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2013, 12:22
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.10.2009 
					
					
					
						Сообщений: 57
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от danik.js
			 
		
	 | 
 
	| 
		Очень сомнительно. Браузер какой? Версия? Демонстрация?
	 | 
 
	
 
 Браузер хром29 и IE10
 
Демонстрация:
 http://otvod.net/board/-1,83996
Внизу объявления нажать на конвертик, откроется форма обратной связи.
 
Текст, который не отправляется: 
"Добрый день! 
Убедительная просьба, при размещении объявлений, указывать реальное название организации."  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2013, 12:42
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 JS тут не причем. Запрос успешно отправляется на сервер. Но серверный скрипт почему то выдает 404 Not found. 
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2013, 15:14
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 без статуса 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.05.2012 
					
					
					
						Сообщений: 8,219
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		pashin76, открываем скрипт- видим:
 
$.ajax(
    {
    type: "POST",
    data: {
        name: $("#name").val(),
        email: $("#email").val(),
        text: $("#text").val(),
        mail: $("#mail").val(),
        board: $("#board").val(),
        mes_id: $("#mes_id").val(),
        email_id: $("#email_id").val()
	    },
    url: "/sendmail.php",
    success: function(data)
        {
        alert("Ваше сообщение отправлено на ящик - " + data);
        $("#parent_popup").hide();
        $("#text").val("");
        }
    });
}
 отправляя форму аяксом желательно через form.serialize() либо FormData()
 http://jquery-docs.ru/ajax/serialize/ , а не перечислением всех полей
 
Для serialize: 
var form=$('#formreg');
 $.ajax({
  url: form.attr('action'),
  dataType: "html",
  type: "POST",
  data: form.serialize(),
	    },
    url: "/sendmail.php",
    success: function(data)
        {
        alert("Ваше сообщение отправлено на ящик - " + data);
        $("#parent_popup").hide();
        $("#text").val("");
        }
    });
}
Кстать для кодировок windows-1251 - есть проблемы с кодингом/декодингом на серве отправляемой формы, если текст с кирилицей 
Значит без геморроя - форму нун отправлять через FormData() - Ищите в инете  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Deff, 01.10.2013 в 23:17.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2013, 16:27
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.04.2010 
					
					
					
						Сообщений: 557
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Deff
			
		
	 | 
 
	
		Кстать для кодировок windows-1251 - есть проблемы с кодингом/декодингом на серве отправляемой формы, если текст с кирилицей 
Значит без геморроя - форму нун отправлять через FormData() - Ищите в инете
	 | 
 
	
 
 c формдатой и кодировками будет та же фигня - оно так же принудительно кодирует в utf8. 
 
так что на сервере в любом случае надо декодировать из utf8 в строку.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2013, 18:24
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 без статуса 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.05.2012 
					
					
					
						Сообщений: 8,219
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Яростный Меч
			
		
	 | 
 
	| 
		c формдатой и кодировками будет та же фигня - оно так же принудительно кодирует в utf8.
	 | 
 
	
 
 Тут сам процесс кодирования jQuery иной для .serialize() на windows-1251
 
Есть неполный вариант перекодирования =>  http://jqbook.net.ru/ajax/ajax_win1251.htm
Думаю что с FormData() - траблов быть не должно, посколь перекодирует сам браузер  в нужном  формате страницы, (а не  jQuery) формы же отправляются нормально... 
На худой конец отправлять форму через фрейм  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Deff, 01.10.2013 в 18:28.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2013, 18:37
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.04.2010 
					
					
					
						Сообщений: 557
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Deff
			
		
	 | 
 
	| 
		Думаю что с FormData() - траблов быть не должно, посколь перекодирует сам браузер в нужном формате страницы, (а не jQuery)
	 | 
 
	
 
 да, перекодирует браузер, но всегда в utf8, даже если кодировка страницы win1251 (в отличии от сабмита формы)
 
т.е. в отличии от encodeURIComponent, тут нельзя что-то поменять.
 
а проблемы особой нет, во всех бэкендах можно указать, в какой кодировке пришли данные (и как из байтов получить строку). имхо, это правильнее, чем хитрить с encodeURIComponent как в примере по ссылке.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |