我尝试用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-我想重定向到一个显示返回视图的新页面。
这是可能的还是错误的做法?
先谢了
1条答案
按热度按时间11dmarpk1#
使用 AJAX 的全部意义在于避免需要回发、刷新、重定向或以其他方式导航离开当前页面。因此,如果你的目标是重定向,那么干脆不要使用AJAX --用其他方式发出请求。
您现在尝试这样做的方式是可能的( AJAX ,然后重定向),只是它是荒谬的-不仅仅是因为它最终导致两个HTTP请求,而不是一个,这是效率较低。
在这个例子中,你可以简单地创建一个小表单,并将这个ID放在其中的一个隐藏字段中,然后表单可以将ID提交并回发到PHP,PHP将按照你所期望的那样显示视图。
这里的隐藏字段取代了现在的ID作为可点击元素的数据属性,并且需要“submit”输入(或者
<button>
,如果你喜欢的话)来提交表单--<a>
不能做到这一点。