Мне нужно обработать свою форму с помощью jQuery (без обновления моего сайта) и с помощью одного buddon я хочу добавить или удалить строку из моей базы данных. Вставка в базу данных работает отлично Делегирование тоже, но я не знаю, что мне нужно сделать, после первого щелчка я добавляю в базу данных, но после второго щелчка я удаляю строку из базы данных.
Моя форма
<form action="index.php" method="post" id="myForm">
<input type="hidden" name="option" value="com_mediamall" />
<input type="hidden" name="task" value="addToFav" />
<input type="hidden" name="addMediaId" value="<?php echo $media->id; ?>" />
<input type="hidden" name="delRow" value="<?php echo $del->id; ?>" />
<input type="submit" name="submit" id="sub" value="1"></input>
</form>
Jquery
<script>
$("#sub").click( function() {
$.post( $("#myForm").attr("action"), $("#myForm :input").serializeArray());
});
$("#myForm").submit( function() {
return false ;
});
</script>
ВСТАВИТЬ ФУНКЦИЮ ИЛИ УДАЛИТЬ
function addToFav() {
$user =& JFactory::getUser();
$db2 =& JFactory::getDBO();
$mediaid = $_POST['addMediaId'];
$delid = $_POST['delRow'];
if(isset($_POST['submit']) == '1') {
$query = ' INSERT INTO '#__mediamall_favourite_media' ('id', 'userid', 'mediaid') VALUES ("","'.$user->id.'","'.$mediaid.'")';
}
elseif(isset($_POST['submit']) == '0') {
$query = ' DELETE FROM #__mediamall_favourite_media WHERE id = "'.$delid.'" ';
$db2->setQuery($query);
$db2->query();
}
}
Будет абрикант, чтобы помочь вам, потому что я трачу много часов, чтобы найти anwer и без результата.. Спасибо
вам нужно использовать preventDefault
$('#myForm').submit(function(e){
e.preventDefault();
var url = $("#myForm").attr("action");
$.post(url,{data : $('#myForm').serialize()},function(data){
//process
});
});
и вы также можете использовать json
для извлечения данных из php, поэтому в вашем php файле вы можете сделать
$data['res'] = 'ok';
$data['something_else'] = 'value';
echo json_encode($data);
Затем обработайте его так
$('#myForm').submit(function(e){
e.preventDefault();
var url = $("#myForm").attr("action");
$.post(url,{data : $('#myForm').serialize()},function(data){
//process
console.log(data.res);
console.log(data.something_else);
}.'json');
});
Переключить submit button value
после insert
или delete
например,
$("#sub").click( function() {
var url=$("#myForm").attr("action");
$.post(url, $("#myForm :input").serializeArray(),function(){
var val=$("#sub").val()==1 ? 0 : 1;// toggle value of submit for insert or delete
$("#sub").val(val);
});
});
В PHP измените ваше условие из isset ($ _ POST ['submit']) == '1' to isset ($ _ POST ['submit']) и $ _POST ['submit'] == '1'
Код вроде,
if(isset($_POST['submit']) and $_POST['submit'] == '1') {
$query = ' INSERT INTO '#__mediamall_favourite_media' ('id', 'userid', 'mediaid') VALUES ("","'.$user->id.'","'.$mediaid.'")';
}
elseif(isset($_POST['submit']) and $_POST['submit'] == '0') {
$query = ' DELETE FROM #__mediamall_favourite_media WHERE id = "'.$delid.'" ';
}
if($query)
{
$db2->setQuery($query); //after if - else conditions
$db2->query();
}
HTML
<form action="" onsubmit="return false;" method="post" id="myForm">
<input type="hidden" name="option" value="com_mediamall" />
<input type="hidden" name="task" value="addToFav" />
<input type="hidden" name="addMediaId" value="<?php echo $media->id; ?>" />
<input type="hidden" name="delRow" value="<?php echo $del->id; ?>" />
<input type="submit" name="submit" id="sub" value="1"></input>
Jquery
$('#myForm').submit(function(){
$.post(url,$('#myForm').serialize(),function(success){
if(success=='success'){
alert('Data Sent);
// or do something else
}
});
});