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 и т.д. Как это поправить? |
Судя по коду по каждому Ctrl+Enter отправляется запрос. А ответ добавляется в начало all_crm. Что именно не устраивает из перечисленных действий?
|
Верно, по каждому keydown отправляется запрос. - Это работает.
Ответ, добавляется в начало div - все ок. Но при первом запросе приходит один ответ, при втором два. Например: Отправляю запрос получаю: привет мир Отправляю второй раз, получаю привет мир привет мир привет мир Почему так? |
Officeoff.ru,
проверить сколько запросов на самом деле уходит |
Потому что keydown сработать может сколько угодно раз, всё зависит от времени её зажатия. Как вариант, поменять keydown на keypress.
|
при keypress, вообще не отправляет...
|
Решил попробовать повесить на клик
$("#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,
Нужно смотреть в браузерном дебаггере, сколько запросов уходит, вывод в лог понавтыкать везде, смотреть какой ответ пришел от сервера, и т.д. А то пока говорить не о чем. |
Потратил целый вечер, чтобы выяснить, что за фигня происходит... Так и не понял :(
Но вышел из ситуации таким образом:
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);
}
});
}
|
А в чем принципиальное отличие?
|
Да, я бы сам с радостью хотел это понять )))
Но, весь прикол в том, что второй вариант работает. Сегодня нужно было написать еще одну функцию такого же плана, сделал по привычке простой вариант ajax-а, опять такая же ерунда. Сейчас буду переписывать ))) |
Блин.... А на этот раз не помогло (((
$(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 ответ больше приходит... Чего делать? |
Цитата:
![]() или попробовать привести полный тестовый код с возможностью запуска |
Да... Разгадка до безумия проста. Помог alert )))
В файле был подключен action.php был подключен файл js скрипта. Хотя не особо понимаю, почему это дублировало действия, отключение этого файла помогло. Всем спасибо ;) |
| Часовой пояс GMT +3, время: 12:14. |