Java, Groovy on Grails, PHP, Kohana

Блог о программировании на Java, Groovy on Grails, PHP, kohana

Currently Viewing Posts in jQuery

Получаем состояние checkbox при помощи jQuery

В форме прописываем checkbox:

id="show<?=id?>"

Вот вариант получения состояния конкретного checkbox:

function showhide(id) {

//Проверяем наш checkbox на :checked
if($("#show"+id).is(":checked"))
{
checked = 1;
}
else checked = 0;
//Записываем состояние checkbox в БД
$.post('/pages/ajax', {
'id': page_id ,
'checked': checked
});
}

Заметка о jQuery (ajax, post)

В своем проекте использую jQuery для работы с элементами форм и передачи запросов в БД при помощи $.post().
Браузеры по разному обрабатывают и выполняют код js скриптов.
В частности firefox 6 и выше выполняет следующий код:

function chagedata (id) 
{
  $.post('/order/changedata', {
        'id': id
        });
  $.ajax({  
            url: "/shop/cart.html",  
            cache: false,
            success: function(html){  
                $("#cart").html(html);  
         });
}

последовательно, т.е. сначала отрабатывает post, после этого ajax получает данные и мы выводим их на экран.
Другие браузеры, к примеру, Opera 11 выполняет скрипты независимо от их порядка, а по мере поступления отклика от них. В данном случае, post еще не записал данные в БД, а ajax уже вывел html код…
Для того, чтобы все происходило в соответствии с нашим планом, необходимо записать код следующим образом:

$.post('/order/changedata', {
        'id': id
    })
    .done(function() {
        $.ajax({  
            url: "/shop/cart.html",  
            cache: false,
            success: function(html){  
                $("#cart").html(html);  
            } 
        });

т.е. пока не выполнится post, ajax не станет выводить данные.

  • Recent Posts