你会得到一组相当主观的答案。有几种方法可以做您似乎正在寻找的事情。
首先,它是一个带有 CodeIgniter-restserver 的单独的“API”控制器,它复制了您的所有控制器功能。这是次优的,因为您必须在两个地方维护您网站的代码。
另一个稍微好一点的选择是检查$this->input->is_ajax_request() 或移动应用发送的类似内容,然后使用restserver 发回响应,但网站通常使用view()。
最终,你最好的选择是重构你的所有代码,创建一个单一的代码库 API 端点(这是你必须决定 CI 是合理的 API 还是你想使用其他东西的地方)和你的网站和移动应用程序使用它。
编辑
我刚刚意识到您特别提到了 ion-auth,而我恰好打开了 PyroCMS 的用户模块。
if ($this->input->is_ajax_request())
{
$user = $this->ion_auth->get_user_by_email($user->email);
$user->password = '';
$user->salt = '';
exit(json_encode(array('status' => true, 'message' => lang('user:logged_in'), 'data' => $user)));
}
所以,对于其余服务器,您可以改为发回:
$this->response(array('status' => true, 'message' => lang('user:logged_in'), 'data' => $user)), 200);
编辑 2
关于如何使用 Ajax 发送帖子数据,这与 OP 完全不同,但这是一个使用 jQuery 的快速示例:
// Not complete code
<script>
// Attach a submit handler to the form
$( "#searchForm" ).submit(function( event ) {
// Stop form from submitting normally
event.preventDefault();
// Get some values from elements on the page:
var $form = $( this ),
term = $form.find( "input[name='s']" ).val(),
url = $form.attr( "action" );
// Send the data using post
var posting = $.post( url, { s: term } );
// Put the results in a div
posting.done(function( data ) {
var content = $( data ).find( "#content" );
$( "#result" ).empty().append( content );
});
});
</script>
来自https://api.jquery.com/jquery.post/的示例