Ajax 调用不会导航到新视图

Ajax call won't navigate to a new view

提问人:Kavishka Rajapakshe 提问时间:12/1/2022 更新时间:12/1/2022 访问量:25

问:

我使用 codeigniter 3 创建了一个应用程序,它使用模型获取存储在 SQL 数据库中的测验,并使用 ajax 和 jquery 填充视图。 下面是用于在 div 中填充数据的代码。

  $(document).ready(function() {
            $.ajax({
                url: "/CW2/ASSWDCW2/cw2app/index.php/Leaderboard/quiz",
                method: "GET",
                dataType: "json"
            }).done(function(data) {
                $('#modtable tr').remove(); // clear table for new result
                var quizzes = data.allQuizzes;
                alert(quizzes.length);
                var i;
                for (i = 0; i < quizzes.length; i++) {
                    quiz = quizzes[i];
                    var block = ' <div id="quizMainBox"><h1>' + quiz.quizName + '</h1><br/><h3>' + quiz.creatorName + '<button onclick="myFunction(\''+quiz.quizId+'\')">Try it</button>'+'</h3></div>'
                    $('#allQuizBox').append(block);
                }
            });
            return false;
            // });
        });

以下是视图中填充的 3 个测验。enter image description here

我想做的是,当用户单击“尝试”按钮时,我希望用户使用测验ID被定向到“single_quiz_view”。所以我在上面的代码下面写了这个ajax函数(myFunction)。

     function myFunction(quizId) {
            // console.log("heyyyy");
            // document.getElementById("demo").innerHTML = "Welcome"+quizId ;
            $.ajax({
                url: "/CW2/ASSWDCW2/cw2app/index.php/Quiz/loadQuiz/",
                method: "POST",
            }).done(function(data) {
                alert("heyyy")
            });
            return false;
        }

其中 Quiz 是控制器名称,loadQuiz 是调用“single_quiz_view”的函数

测验控制器

  public function loadQuiz()
{
    // $quizId = $this->uri->segment(3);
    $this->load->view('quiz/single_quiz_view');
}

我的问题是, 当我单击“尝试按钮”时,我在完成功能中得到了 alertBox。我得到的状态代码为 200,但仍然无法导航到“single_quiz_view”。控制台不会给出任何错误。请帮忙enter image description here

enter image description here

JavaScript jQuery ajax DOM 代码点火器-3

评论

0赞 Lapskaus 12/1/2022
对于您要做的事情来说,这似乎过于复杂。你不能使用 .顺便说一句,ajax 本身不会导航到任何端点,要么您呈现 HTML 服务器端,返回它然后在客户端显示它,要么您需要像在 ajax 调用中一样执行 sth 操作......但正如我所说,这似乎不合时宜<button onclick="myFunction(\''+quiz.quizId+'\')">...<a href="/path/to/single_quiz_view/QUIZ_ID">Try it</a>window.location.href = my.new.endpoint

答: 暂无答案