Привет У меня есть следующий код на моей странице change.php:
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("FACT", $con);
if($_POST['isChecked']==1) // SEE THIS LINE PLEASE
{
mysql_query("UPDATE Orc SET CON = 'CHECKED'
WHERE UID = '1'");
}
else
{
mysql_query("UPDATE Orc SET CON = 'NO'
WHERE UID = '1'");
}
mysql_close($con);
Эта страница вызывается из моего index.php, использующего jquery и:
$.post("test.php", { isChecked:$('#checkbox_id').attr('checked') } );
Он отлично подходит для снятия флажка. Мне все еще нужно вручную обновить страницу, чтобы изменения произошли в БД, и я не могу изменить окно обратно на выбранный...
Мне не нравится это, пожалуйста, помогите.
Спасибо.
Чтобы обновить страницу без обновления, вам необходимо будет предоставить функцию обратного вызова для вызова ajax (код для запуска, когда вызов был успешно завершен). Из jQuery Docs:
$.post("test.php", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
Итак, вы можете использовать jQueries DOM-манипуляцию для изменения частей страницы, чтобы страница php возвращала новые данные для обновления страницы или автоматически обновлялась, если вы полагались на данные из БД.
Решение Адама Хит будет работать, но способ, которым я это сделаю, следующий:
$.ajax({
type : 'post',
url : 'your url',
data: {isChecked : $('#checkbox_id').attr('checked')},
success: function(resultData) {
//in your PHP скрипт do all server side scripting and then
//if your methods executed successfully return true otherwise return false
if (resultData == true) {
$('#checkbox_id').attr('checked', true);
} else {
$('#checkbox_id').attr('checked', false);
}
}
});