我目前在我的网站上使用ajaxComplete的一段代码存在问题,并且多次触发。

这是实际系统的一些背景知识。我为wordpress开发了一个小插件,可让您输入开始日期,结束日期和参考代码号。当您进入授课课程时,您可以添加,编辑和删除这些字段。

编辑部分是我当前遇到的问题,当我去编辑现有课程日期时,我的代码逻辑将获取该记录的数据,并将其直接从数据库中馈送到表单中。

我遇到的问题是,当我按下编辑按钮以修改该记录ajaxComplete请求的开始日期,结束日期和课程参考时,将不断触发并导致结果刷新输入并再次获取默认数据并将其添加回每5到7秒。这并没有给我足够的时间来编辑开始日期,结束日期和课程代码,然后按“更新”,因为这些字段将恢复为默认值。

无论如何,我可以阻止这种情况的发生吗?

$j("a.edit-date").live("click", function(e) {
            e.preventDefault;

            var target = $j(this);

            var postData = {};
            postData['data[_course-date-id]'] = target.attr('rel');
            postData['data[_course-post-id]'] = <?php echo $post->ID; ?>;
            postData['data[_cancel-edit]'] = 'no';

            $j.ajax({
                type: "POST",
                url: "<?php echo get_bloginfo('stylesheet_directory'); ?>/code/module-courses-edit-date.php",
                data: postData,
                success: function(msg) {

                    $j("#dates").ajaxComplete(function(event, request, settings) {

                        result = msg;
                        var json = $j.parseJSON(result)
                        var form = '<label>Edit the date below and hit update</label><br /><input type="text" class="course-start-date" name="_course-start-date" id="_course-start-date-' + json.course_date_id + '" placeholder="Start Date" value="' + json.course_start_date + '" /> &nbsp; <input type="text" class="course-end-date" name="_course-end-date" id="_course-end-date-' + json.course_date_id + '" placeholder="End Date" value="' + json.course_end_date + '" /> &nbsp; <input type="text" class="course-date-reference" name="_course-date-reference" id="_course-date-reference-' + json.course_date_id + '" placeholder="CDC 01" size="5" value="' + json.course_date_reference + '" /> &nbsp; <a href="#" id="update-date-' + json.course_date_id + '" class="button update-date" rel="' + json.course_date_id + '">Update</a> &nbsp; <a href="#" class="cancel-edit">Cancel</a>'

                        $j(this).html(form);

                    });

                }

            });

            return false;

        });

最佳答案

使用下面的代码。您已经具有成功功能,因此无需添加ajaxComplete请求。

          $j.ajax({
            type: "POST",
            url: "<?php echo get_bloginfo('stylesheet_directory'); ?>/code/module-courses-edit-date.php",
            data: postData,
            success: function(msg) {
                    var json = $j.parseJSON(msg);
                    var form = '<label>Edit the date below and hit update</label><br /><input type="text" class="course-start-date" name="_course-start-date" id="_course-start-date-' + json.course_date_id + '" placeholder="Start Date" value="' + json.course_start_date + '" /> &nbsp; <input type="text" class="course-end-date" name="_course-end-date" id="_course-end-date-' + json.course_date_id + '" placeholder="End Date" value="' + json.course_end_date + '" /> &nbsp; <input type="text" class="course-date-reference" name="_course-date-reference" id="_course-date-reference-' + json.course_date_id + '" placeholder="CDC 01" size="5" value="' + json.course_date_reference + '" /> &nbsp; <a href="#" id="update-date-' + json.course_date_id + '" class="button update-date" rel="' + json.course_date_id + '">Update</a> &nbsp; <a href="#" class="cancel-edit">Cancel</a>'

                    $j("#dates").html(form);
            }

        });

10-06 04:48