未捕获的 ReferenceError:函数未定义 jQuery

2023-12-24

我试图在单击按钮时调用 jQuery 函数。但我收到错误如下:

未捕获的引用错误:update_question_ajax 未定义

HTML:

<button type="button" class="update-question-<?php echo $i; ?> button" onclick="update_question_ajax(<?php echo $i; ?>)" style="outline: 0 none;"><?php _e('Update') ?></button>

jQuery:

$(function(){
    function update_question_ajax(id)
    {
        var test = $('.edit-question-' + id + ' input[name="translated"]');
        var editedQuestionId = $('#question-id-'+id).val();
        var editedQuestionObj = $('.edit-question-' + id + ' input[name="translated"]').val();
        var modalObj = $('#myQuestionModal');

        $.ajax({
            type: "POST",
            url: "<?php echo base_url('admin/question/admin_edit_question'); ?>",
            data:{
                edited_question: editedQuestionObj,
                question: editedQuestionId
            },
            success: function(){
                modalObj.dialog('close');
                modalObj.html('');
            },
            complete: function(){
                //window.location.reload(true);
            }
        });
        return false;
    }
});

如果你们能帮我解决这个问题,我将不胜感激。

谢谢你!


似乎是范围问题。您基本上已经在另一个函数中定义了该函数。您还应该尽量避免将 php 放在 javascript 中。从技术上讲,它是有效的,但并不是真正的好形式。

删除了内联点击处理程序。

<button type="button" class="update-question button" data-id="<?php echo $i; ?>" style="outline: 0 none;"><?php _e('Update') ?></button>

然后我们创建一个自执行函数,将 jQuery 作为 $ 传入,这使得内部的所有内容都能够使用“$”作为 jQuery。然后为按钮定义点击处理程序并使用数据属性来传递 id,而不是使用混合在 JS 中的 PHP 并将其放置在 DOM 中。就是感觉干净一点。另外,请确保在文档底部、关闭正文之前加载 jquery/其他脚本。这样您就不需要 .ready,因为您的文档已经加载。

(function($){
    // Define click handler. 
    $('button.update-question').on('click', function(e){
        e.preventDefault();
        var id = $(this).data('id');

        update_question_ajax(id);
    });

    function update_question_ajax(id) {
        var test = $('.edit-question-' + id + ' input[name="translated"]'),
            editedQuestionId = $('#question-id-'+id).val(),
            editedQuestionObj = $('.edit-question-' + id + ' input[name="translated"]').val(),
            modalObj = $('#myQuestionModal');

        $.ajax({
            type: "POST",
            url: "YOURURL",
            data:{
                edited_question: editedQuestionObj,
                question: editedQuestionId
            },
            success: function(){
                modalObj.dialog('close');
                modalObj.html('');
            },
            complete: function(){
                //window.location.reload(true);
            }
        });
    }

}(jQuery));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未捕获的 ReferenceError:函数未定义 jQuery 的相关文章

随机推荐