【问题标题】:Correct way to use multiple AJAX actions?使用多个 AJAX 操作的正确方法?
【发布时间】:2017-04-16 06:32:04
【问题描述】:

我已经成功创建了一个“添加到收藏夹”按钮,但现在在“从收藏夹中删除”部分遇到了困难。

我不确定在 PHP 文件中处理多个 ajax 操作的正确方法。 到目前为止,我的代码如下所示:

HTML

<div class="favourite-links">
  <a href="inc/functions?action=remove&..." id="remove">
Remove From Favourites
</a>
  <a href="inc/functions.php?action=add&..." id="add">
Add to Favourites
</a>
</div>

JQUERY

$(document).ready(function() {

  $('#add').click(function(event) {
    event.preventDefault();

    var courseData = {...}

    $.ajax({
      url: "inc/functions.php",
      type: "POST",
      data: courseData,
      success: function() {
        $('#add').css('display', 'none');
        $('#remove').css('display', 'inline');
        alert('successful');
      }
    });
    return false;
  });
});

PHP

<?php require("../../Common2.php"); 
$sessionID = $_COOKIE['PHPSESSID'];
$student = $_POST['userid'];
$courseID = $_POST['courseID'];
$courseName = $_POST['courseName'];


$query = "INSERT IGNORE INTO course_tag_fetch
    (sessionID, courseID, courseName, userid)
    VALUES
    ('$sessionID', '$courseID', '$courseName', '$student')";

    $query_run = mysql_query($query);

    if ($query_run) {
        echo 'Success';
    } else {
        echo 'Failed';

    }

?>

我希望删除操作从数据库中删除。将动作放在 if 语句中的最佳方法是什么? 例如。

if (action == "add") {
--- INSERT query --- }

if (action == "remove) {
--- DELETE query ---}

或者有没有更合适的方法来做到这一点? 非常感谢任何帮助。

【问题讨论】:

  • 您可以将async: false添加到jQuery调用中,这样如果您多次单击,删除调用将不会在添加调用之前被调用。
  • 永远不要使用链接来更新数据库。只需 google 一次访问即可添加和删除,并且可能仅通过抓取您的页面来添加、添加、添加
  • @mplungjan 谢谢,我可以把它改成不同的元素,比如按钮吗?
  • @BartBergmans 谢谢,我会补充的
  • 只是不要在链接的 href 中包含它。您可以将它放在数据属性中,这样它就不会被遵循,并让脚本读取属性而不是 href

标签: php jquery mysql ajax


【解决方案1】:

在你的 PHP 代码中

$action = trim($_REQUEST['action']);
switch($action){
case 'add':
// insert query here
break;
case 'remove':
// delete query here
break;
}

不要使用 mysql 用户 PDO 代替

【讨论】:

  • 谢谢。为什么使用 case 比 if 语句更好?我从未听说过 PDO,我会调查一下!
  • @ovokuro 看看
猜你喜欢
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 2015-08-14
  • 2016-07-18
  • 2018-04-17
  • 2018-09-16
相关资源
最近更新 更多