2017-08-11 281 views
-1

我想用AJAX制作一个最喜欢的按钮。我已经写了PHP查询,但我不知道如何为它制作AJAX并将它连接到我的按钮。ajax最爱按钮

我想是最喜欢/取消收藏

$test = $_SESSION['ww']; 
if (isset($_POST['submit']))  
{ 
    $x = $_SESSION['x']; 
    $SelectQry2 = "select * from favorites where User_Id = ".$test." and User_Post = ".$x.""; 
    $slc = mysqli_query($link , $SelectQry2); 

    if (mysqli_num_rows($slc)> 0) 
    { 
    $DeleteQry = "DELETE from favorites where User_Post = ".$x.""; 
    $del = mysqli_query($link , $DeleteQry); 
    } 
    else 
    { 
    $url = $_SERVER['REQUEST_URI']; 
    $InsertQry = "insert into favorites"; 
    $InsertQry .="(`User_Id` ,`User_post`, `url`) VALUES"; 
    $InsertQry .=" ('$test' ,'$x', '$url')"; 
    $fav = mysqli_query($link, $InsertQry); 
    } 
} 

if(isset($_GET['id'])) 
{ 
    $id = intval($_GET['id']); 
    $SelectSql = " SELECT * , `upload_diy_ordinary`.`date` as datep FROM `users_final` LEFT OUTER JOIN `upload_diy_ordinary` ON `upload_diy_ordinary`.`User_ID`=`users_final`.`id` "; 
    $SelectSql .= " where `upload_diy_ordinary`.`ID` = $id"; 
    $result = mysqli_query($link, $SelectSql); 

    while($row = mysqli_fetch_assoc($result)) 
    { 
    $_SESSION['x'] = $row['id']; 
    <form method="post"> 
     <input type="submit" name="submit" id="favorite" value="favorite" /> 
    </form> 
    <?php } 
} ?> 
$(document).on('click', '#favorit', function(e) { 
    var data = $("#form").serialize(); 
    $.ajax({ 
    data: data, 
    type: "post", 
    url: "details.php", 
    success: function(data) { 
     alert("Data Save: " + data); 
    } 
    }); 
}); 

我会很感激,如果你能帮助我

+3

您的SQL查询容易受到注入攻击。恶意用户输入可能会轻易破坏,窃取甚至破坏您的数据。请学习使用参数化查询和准备好的语句,以更好地保护自己。这并不难,也是一个很好的习惯。 http://bobby-tables.com/对风险有一个很好的(和有趣的)解释,还有一些关于如何安全编写查询的PHP/mysqli代码示例。 – ADyson

+0

我真的不知道ajax很好,我只知道我写的是可以帮助我运行ajax的ajax的基本形式。 –

+0

我真的不知道ajax很好,我只知道我写的是可以帮助我运行ajax的ajax的基本形式。 –

回答

1

一些明显的问题,我可以看到:

1)'#favorit'将不匹配任何按钮,因为您错过了字符串末尾的e

2)一旦这个工作,它会回发你的表格,因为这是一个“提交”按钮自动执行的操作。所以你会得到一个回发,也可能是一个竞争的Ajax请求 - 不好。将e.preventDefault();写为您的点击功能的第一行,以停止发生常规回发并允许您的ajax工作。

3)你正在写出多个按钮的ID为“最爱”。 HTML中不允许使用多个ID。您的“点击”功能只会匹配第一个按钮,因为所有其他按钮都被认为是无效的。

4)$("#form").serialize();也将无法正常工作,因为您没有任何带有ID“form”的元素。

我建议做以下几点:

1)撰写您的形式这样的代码,一类属性,以便您可以识别的形式,并结合事件处理他们所有的多个实例(不同的ID,你可以重复2)将您的事件处理程序绑定到表单的提交事件,而不是提交按钮的单击事件。2)将事件处理程序绑定到表单的提交事件,而不是提交按钮的单击事件。然后,您可以轻松地对表单进行序列化。

$(document).on('submit', '.favourite-form', function(e) { 
    e.preventDefault(); //prevent a normal postback and allow ajax to run instead 
    var data = $(this).serialize(); //"this" represents the form element in this context 
    $.ajax({ 
    data: data, 
    type: "post", 
    url: "details.php", 
    success: function(data) { 
     alert("Data Save: " + data); 
    }, 
    error: function(jqXHR, textStatus, errorThrown) //gracefully handle any errors in the UI 
    { 
     alert("An ajax error occurred: " + textStatus + " : " + errorThrown); 
    } 
    }); 
}); 

也请注意上面重新您的严重的漏洞SQL注入攻击,这是另外一个问题,你应该考虑尽快修复我的意见。