codeigniter AJAX 发布到ci4中的控制器后返回视图

wlzqhblo  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(134)

我尝试用jquery实现 AJAX 调用后返回视图。
HTML语言

<a class="btn" data-value="10">

jQuery查询

$(document).on("click", ".btn", function(){
        $.ajax({
            url: 'http://localhost:8080/test/testmenu/',
            type: 'POST',
            data: { id : $(this).data('value')},
            success: function(response){
                // What to do?
            }
        })
    })

CI 4路线

$routes->post('test/testmenu/','Menu::openMenu');

CI 4控制器

public function openMenu(){
    $menu = model(\MenuModel::class);
    $menu_id = $this->request->getPost("id");

    $data['menu'] = $menu->getMenuById($menu_id);
    $data['title'] = "Test";

    // How to correctly return?
    return view('menu/testmenu/',$data);
}

我不想在 AJAX success中用$(“div”).html(response)替换DOM div-我想重定向到一个显示返回视图的新页面。
这是可能的还是错误的做法?
先谢了

11dmarpk

11dmarpk1#

使用 AJAX 的全部意义在于避免需要回发、刷新、重定向或以其他方式导航离开当前页面。因此,如果你的目标是重定向,那么干脆不要使用AJAX --用其他方式发出请求。
您现在尝试这样做的方式是可能的( AJAX ,然后重定向),只是它是荒谬的-不仅仅是因为它最终导致两个HTTP请求,而不是一个,这是效率较低。
在这个例子中,你可以简单地创建一个小表单,并将这个ID放在其中的一个隐藏字段中,然后表单可以将ID提交并回发到PHP,PHP将按照你所期望的那样显示视图。

<form action="http://localhost:8080/test/testmenu/" method="POST">
 <input type="submit" name="submit" class="btn" value="Submit"/>
 <input type="hidden" name="id" value="123"/>
</form>

这里的隐藏字段取代了现在的ID作为可点击元素的数据属性,并且需要“submit”输入(或者<button>,如果你喜欢的话)来提交表单--<a>不能做到这一点。

相关问题