0

我需要使用 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> 

查询

<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();
   }    
}

将得到您的帮助,因为我花了很多时间来找到答案而没有结果..谢谢

4

3 回答 3

1

你需要使用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');
});
于 2013-10-23T08:08:43.247 回答
0

切换submit button valueinsertdelete喜欢,

$("#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'更改为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();
}
于 2013-10-23T08:09:05.267 回答
-1

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>

查询

$('#myForm').submit(function(){
$.post(url,$('#myForm').serialize(),function(success){
if(success=='success'){
alert('Data Sent);
// or do something else
}
});
});
于 2013-10-23T08:06:45.373 回答