2016-06-25 15 views
0

私はCodeIgniter 3を使用しています。スクリプトの保存場所に関するアドバイスがあります。 JSONデータをJavascript関数に送るPHPスクリプトをjQueryで呼びたいと思います。CodeIgniterのベストプラクティス:jQuery/Ajaxコールバックスクリプトの格納場所

CodeIgniterデータベース設定ファイルを使用してこのスクリプト内のデータベースとの接続を行うにはどうすればいいですか?ここで

は私のjQueryのコールバック構造である:

<?php 
session_start(); 
header('Content-Type: text/json'); 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 

$callback = array(); 

echo json_encode($callback); 

私が作ったapp/callbackフォルダにこのスクリプトを保存したが、私はappフォルダの外にそれを保存するかどうかどうかはわかりません。.. CodeIgniterのプロジェクトをどのように構造化していますか?あなたのアドバイスのための

感謝:)

+0

私は、コールバックURLも単一のスクリプトではなくルートとして扱うべきだと思います。 –

+0

あなたは正しいです!なぜ私はそれについて考えなかったのかわからない...たぶん私は難しさを探していた。ありがとう@u_mulder – cusmar

+0

これに対して通常のコントローラを使用していないのはなぜですか? – charlietfl

答えて

1

セットアップ;あなたのapplication/config/database.phpのconfigureで

データベース接続で
application/config/autoload.phpデータベースライブラリは、データベースのセットアップ

モデルの詳細は

hereを有効になっていることを確認。

application/models /には、データベースにアクセスするための関数thing_model.phpを作成します。データベース

コントローラを照会するための詳細は

hereを呼び出したときに、この例public function get_data()のために、この機能は、データベースJSONデータの出力を生成します。

application/controllers/thing.php ajax関数を作成します。いただきました!ハプニング

public function ajax() 
    { 
     if ($this->session->loggedin && $this->input->is_ajax_request()){ 
      $action = $this->uri->segment(3); 
      if ($action === "pull"){ 
       $forms = $this->thing_model->get_data(); 
       //actions here 
      } 

      if ($action === "test"){ 
       //actions here 
       echo "hello world!"; 
      } 
     } else { 
      redirect('/homepage'); 
     } 
    } 

if ($this->session->loggedin && $this->input->is_ajax_request()){ ここでは、セキュリティのためにチェックしていると、要求は自然の中で

$action = $this->uri->segment(3);アヤックスであることをactioningのURIからセグメントをつかんれます。例えば、
。あなたのアヤックスはhttp://example.org/thing/ajax/pull

アヤックスに呼び出された場合

if ($action === "pull"){http://example.org/controller/ajaxmethod/this_actionはデータを返しています。あなたの.jsでjQueryのJSONアヤックス(ビューのフッターに.jsファイルを読み込む)をファイルに

$('#buttonAction').click(function() { 
     //Jquery Ajax code here 
     $.ajax({ 
       method: "POST", 
       dataType: "json", 
       url: global_path + "thing/ajax/pull", 
       data: { user_id: "1", data: "ABC" } 
       }) 
       .done(function(data) { 
        //process your JSON data here 
       }); 
    }); 

起こっていただきました。

jqueryのAjaxのデータ型see here
url: global_path + "thing/ajax/pull",はプルアクションを使用してコントローラのアヤックス()メソッドを呼び出します。

注意:

コントローラの__constructには、厳密な操作と望ましくない不明な点について、あなたの関数へのajax要求だけを保護するためのテストをここに置くことをお勧めします。

あなたのアプリケーションに合っていれば、別のコントローラにajaxを置くことができます。しかし、これは重複した小切手などでセキュリティの頭痛を引き起こす可能性があります。

1

あなたはjQueryのからバックエンド機能を呼び出したい場合は、AJAXに行かなければなりません。ドキュメントhereを確認してください。以下の簡単な例を参照してください。あなたは(PHPファイルをある)あなたのビューでこのスクリプトを使用している場合は

$.ajax({ 
    method: "POST", 
    url: "PATH_TO_YOUR_CONTROLLER_FUNCTION", 
    data: { field_name1: "Field value 1", field_name2: "Field value 2" } 
}).done(function(msg) { 
    console.log(msg); 
}); 

、あなたはパスを設定するには、PHPの関数を使用することができます。例えば:

url: "<?php echo base_url('your_controller/your_function')?>" 

デシベル接続とすべてのロジックは、コントローラに留まり、通常のように実現されます。

関連する問題