この問題は、コードイグナイター固有のものである可能性が非常に高いです。
ビューとの間でリダイレクトする redirect.php というコントローラーがあります。_remap
ほとんどの場合、このコントローラーには、case ステートメントですべてのリダイレクトを行うパブリック関数が 1 つあります。$.POST
ビューからコントローラーに送信するまで、すべてがうまく機能しています。_remap をヒットして、リクエストが AJAX から来ているという事実を探して、それを実行したいのです。
IS_AJAX
私はチェックしている定数を持っています。
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
しかし、ページにアクセスするたびに、常にデフォルトに再マッピングされ、リクエストがそのページに送信されます。そこでは、データをエコーして前後に警告しているときに、基本的にそのページのデータが返されます。
洞察はありますか?
参考のため、
redirect.php (変数を定義するコードとさらに 2 つのケースがありますが、それらにヒットしていません。「インデックス」/デフォルトにヒットしています)
public function _remap($method)
{
switch ($method) {
case $method == 'index':
$this->load->view('main');
break;
case $method == 'IS_AJAX':
var_dump($_POST);
break;
default:
$this->load->view('main');
}
}
tweetview.php (redirect.php 内の別のケースでリダイレクト コントローラーによって読み込まれたビュー、json_tweets send は JSON 変数)
//jquery
$.post("http://localhost/2fb/index.php/redirect", {'json_tweets': json_tweets},
function(data) {
alert(data);
});