Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   append или appendTo (https://javascript.ru/forum/dom-window/52591-append-ili-appendto.html)

Officeoff.ru 25.12.2014 17:41

append или appendTo
 
Всем, доброго времени суток. Есть кусок кода

$('#text').keydown(function (event) {
		if (event.ctrlKey && event.keyCode == 13) {
		
			var text = $("#text").val();
			var page = "contragent";
			var action = "new_do";
			$.post("/modules/action.php", {text:text, page:page, action:action}, function(data){
				if (data.length>0){
					$("#all_crm").prepend(data); // Вопрос по этой строке
				}
			});
		}
	});


Мне нужно чтобы в начало div all_crm приходил ответ с сервера. Вроде все просто. И первый раз приходит один ответ, в следующий 2, затем 3 и т.д.
Как это поправить?

danik.js 25.12.2014 17:48

Судя по коду по каждому Ctrl+Enter отправляется запрос. А ответ добавляется в начало all_crm. Что именно не устраивает из перечисленных действий?

Officeoff.ru 25.12.2014 17:50

Верно, по каждому keydown отправляется запрос. - Это работает.
Ответ, добавляется в начало div - все ок.
Но при первом запросе приходит один ответ, при втором два.
Например:
Отправляю запрос получаю:
привет мир
Отправляю второй раз, получаю
привет мир
привет мир
привет мир

Почему так?

рони 25.12.2014 18:16

Officeoff.ru,
проверить сколько запросов на самом деле уходит

ruslan_mart 25.12.2014 18:28

Потому что keydown сработать может сколько угодно раз, всё зависит от времени её зажатия. Как вариант, поменять keydown на keypress.

Officeoff.ru 25.12.2014 19:14

при keypress, вообще не отправляет...

Officeoff.ru 25.12.2014 19:44

Решил попробовать повесить на клик
$("#sub").click(function(e){
		
			var text = $("#text").val();
			var page = "contragent";
			var action = "new_do";
			$.post("/modules/action.php", {text:text, page:page, action:action}, function(data){
				if (data.length>0){
					$("#all_crm").prepend(data);
				}
			});
		});


Та же самая ерунда...

Officeoff.ru 26.12.2014 00:01

Видимо лимит подсказок закончился??? )))

Яростный Меч 26.12.2014 18:01

Officeoff.ru,
Нужно смотреть в браузерном дебаггере, сколько запросов уходит, вывод в лог понавтыкать везде, смотреть какой ответ пришел от сервера, и т.д.
А то пока говорить не о чем.

Officeoff.ru 28.12.2014 21:36

Потратил целый вечер, чтобы выяснить, что за фигня происходит... Так и не понял :(
Но вышел из ситуации таким образом:
function newdo() {
	var message   = $('#newdo').serialize();
	$.ajax({
		type: 'POST',
		url: '/modules/action.php',
		data: message,
		success: function(data) {
			$('#all_crm').prepend(data);
		},
		error:  function(xhr, str){
			alert('Возникла ошибка: ' + xhr.responseCode);
		}
	});
}

danik.js 29.12.2014 08:27

А в чем принципиальное отличие?

Officeoff.ru 01.01.2015 19:45

Да, я бы сам с радостью хотел это понять )))
Но, весь прикол в том, что второй вариант работает. Сегодня нужно было написать еще одну функцию такого же плана, сделал по привычке простой вариант ajax-а, опять такая же ерунда. Сейчас буду переписывать )))

Officeoff.ru 01.01.2015 20:42

Блин.... А на этот раз не помогло (((
$(document).ready(function(){
    $("#search_term").keyup(function(e){ 
		if ((e.which == 38) || (e.keyCode == 40)) {
			return false;
		}
		if ((e.which == 13) || (e.keyCode == 27)) {
			$("#result_base").hide();
			var name = $("#search_term").val();
			var id = $(this).find("input[name='id']").attr("value");
			var page = "base";
			var action = "position";
			$.ajax({
				type: 'POST',
				url: '/modules/action.php',
				data: {name:name, id:id, action:action, page:page},
				success: function(data) {
					$('#inner_base').append(data);
					$(".no_str").fadeOut('slow');
					$('#submit').removeAttr( "disabled" );
				},
				error:  function(xhr, str){
					alert('Возникла ошибка: ' + xhr.responseCode);
				}
			});
			
			
		}
		search_base(); 
	});
});

Жму enter с каждым нажатием на 1 ответ больше приходит... Чего делать?

bes 01.01.2015 23:49

Цитата:

Сообщение от Officeoff.ru
Жму enter с каждым нажатием на 1 ответ больше приходит... Чего делать?



или попробовать привести полный тестовый код с возможностью запуска

Officeoff.ru 02.01.2015 00:45

Да... Разгадка до безумия проста. Помог alert )))
В файле был подключен action.php был подключен файл js скрипта.
Хотя не особо понимаю, почему это дублировало действия, отключение этого файла помогло. Всем спасибо ;)


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