#javascript #jquery #ajax #checkbox
#javascript #jquery #ajax #флажок
Вопрос:
В настоящее время я создаю систему, в которой должна быть возможность устанавливать / снимать флажок. Каждый раз, когда он меняет статус, мне нужен jQuery для выполнения AJAX-вызова страницы, которая обновляет базу данных.
Как я могу это сделать?
Ответ №1:
Например, вы можете сделать это следующим образом:
Сначала вы должны посмотреть, установлен ли флажок:
$("#yourSelector").live("click", function(){
var id = parseInt($(this).val(), 10);
if($(this).is(":checked")) {
// checkbox is checked -> do something
} else {
// checkbox is not checked -> do something different
}
});
Вы можете загружать определенный контент через Ajax:
$.ajax({
type: "POST",
dataType: "xml",
url: "path/to/file.php",
data: "function=loadContentamp;id=" id,
success: function(xml) {
// success function is called when data came back
// for example: get your content and display it on your site
}
});
Комментарии:
1. Помните, что вам нужно будет где-то объявить переменную
id
, прежде чем присваивать ей значение. И, при использованииparseInt()
всегда стоит указывать основание :parseInt($(this).val(), 10);
Ответ №2:
На каком бите вы застряли? Вероятно, у вас должно быть что-то вроде этого…
$('#myCheckbox').click(function() {
var checked = $(this).is(':checked');
$.ajax({
type: "POST",
url: myUrl,
data: { checked : checked },
success: function(data) {
alert('it worked');
},
error: function() {
alert('it broke');
},
complete: function() {
alert('it completed');
}
});
});
Комментарии:
1. Ну, я застрял на клике. Я читал, что плохо использовать click с флажком. И когда я пытаюсь выполнять оповещения при нажатии на флажок, это ничего не предупреждает — поэтому я не уверен, что это работает : s
Ответ №3:
Определить, установлен ли флажок:
if ( $('#id').is(':checked') ) { }
Это может быть выполнено в функции, которая запускается событием onchange.
function checkCheckboxState() {
if ( $('#id').is(':checked') ) {
// execute AJAX request here
}
}
Ответ №4:
Вероятно, что-то вроде этого?
$('.checkbox').click(function (){
var val = $(this).is(':checked');
$.load('url_here',{status:val});
});
Ответ №5:
<input type="checkbox" name="foo" value="bar" class="checkIt"/>
<script type="text/javascript">
$('.checkIt').bind('click', function() {
if($(this).is(":checked")) {
// checkbox is checked
} else {
// checkbox is not checked
}
});
</script>
Теперь у вас может быть более одного флажка.