【问题标题】:JQuery Post with PHP SQL queries带有 PHP SQL 查询的 JQuery Post
【发布时间】:2014-05-13 08:08:59
【问题描述】:

你好所以我想知道是否有人可以帮助我。我有一个个人 TODO List PHP 项目,我可以输入一个任务,然后按“Enter”,任务会自动添加到列表中。有一个功能可以删除这些任务和 2 个选项卡,一个用于查看当前任务,一个用于查看已删除(或已完成)任务的存档。

一旦我实现了选项卡,我的删除功能就停止了工作。我假设它与 view.task.php 的发布位置有关。下面是我的 jQuery 函数,用于显示任务/存档以及删除函数。

function delete_task() {
    $.get('includes/view-task.php'); 

    $('.delete-button').click( function(){

        var current_element = $(this);
        var id = $(this).attr('id');

        $.post('includes/delete-task.php', { task_id: id }, function() {
            current_element.parent().fadeOut("fast", function() { $(this).remove(); });
            alert('it worked');
        });
    });
}

function show_tasks() {
    $('.task-button').click(function(){
        var current_element = $(this);
        var id = $(this).attr('id');       

        $.post('includes/view-task.php' , function(task) {
            $(task).appendTo('.todo-list ul').hide().fadeIn(); 
        });

        $('.archive-item').fadeOut("slow", function() { $('.archive-item').remove(); });
        $('.task-button').attr('disabled','disabled');     
        $('.archive-button').attr('disabled',false);
    });
 }

这是我的视图任务 php 脚本:

<?php
    require("connect.php");
    $query = mysql_query("SELECT * FROM tasks ORDER BY date ASC, time ASC");
    $numrows = mysql_num_rows($query);

    if($numrows>0){
        while( $row = mysql_fetch_assoc( $query ) ){

            $task_id = $row['id'];
            $task_name = $row['task'];

            echo '<li class="task-item">
                        <span>'.$task_name.'</span>
                <img id="'.$task_id.'" class="delete-button" width="10px" src="images/close.svg" />
              </li>';
        }
    }
?>

待办事项列表目前已上传至http://derekonay.com/todo提前感谢您的帮助。

【问题讨论】:

  • 你的 jquery 代码是包裹在 $(document).ready(function() { ... }); 还是类似的东西中?
  • 目前没有,我只是将所有函数都包含在一个 functions.js 文件中,该文件包含在我的结束正文标记之前。在文件的顶部,我调用了所有 4 个函数,add_task();、delete_task();、show_tasks(); 和 show_archive();
  • 是的,它不会工作。将代码包装在文档就绪函数中。
  • 我需要摆脱我的功能还是将其放入 if/else 中,例如 if (tasks-are-shown) delete_task();其他(什么都没有)?
  • 见下面我的回答。您不需要为这些代码块定义函数。

标签: php jquery sql


【解决方案1】:

我认为您的代码的问题在于它没有包含在文档就绪事件中。要解决此问题,请尝试以下操作:

<script type="text/javascript">

$(document).ready(function()
{
    $.get('includes/view-task.php'); 

    $('.delete-button').click( function(){

        var current_element = $(this);
        var id = $(this).attr('id');

        $.post('includes/delete-task.php', { task_id: id }, function() {
            current_element.parent().fadeOut("fast", function() { $(this).remove(); });
            alert('it worked');
        });
    });

    $('.task-button').click(function(){
        var current_element = $(this);
        var id = $(this).attr('id');       

        $.post('includes/view-task.php' , function(task) {
            $(task).appendTo('.todo-list ul').hide().fadeIn(); 
        });

        $('.archive-item').fadeOut("slow", function() { $('.archive-item').remove(); });
        $('.task-button').attr('disabled','disabled');     
        $('.archive-button').attr('disabled',false);
    });

});

</script>

【讨论】:

  • 我想我只需要更多地处理我的代码才能真正找到问题,因为仅此一项并不能解决问题。当删除按钮工作时,我的 HTML 页面中有一个用于显示任务的 php 包含,但现在我通过单击调用 php 脚本,删除已停止工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多