0

ナビゲーション バーに「サインイン」というテキストのリスト アイテムがあります。codeignter コントローラーには、サインインしているユーザーのユーザー名を返す関数があります。AJAX を使用して、リスト項目の名前を CI コントローラーによって返される php 変数に変更するにはどうすればよいですか?

4

2 に答える 2

3

これを処理するコントローラーをセットアップし、ajax を介して URL を呼び出し、success()DOM 要素を変更する必要があります。

コントローラ

<?php
function getusername(){
  //dosomething
  echo json_encode($username);
}

アヤックス

$.ajax({
  //url to the above controller
  url: "/auth/getusername",
  dataType: "JSON",
  //on success, get the echo'd data json data from the controller
  success: function(d){
    //put the json_data into the field via .html()
    $('.username-field').html(d);
  }
});

私の質問は、ビューで条件ステートメントを使用するだけで、ページのリロード時にその名前が表示されるのに、なぜ ajax を使用してこれを行うのですか? ユーザーのログイン時にすでに HTTP リクエストを行っています。ユーザー名を取得するためだけに追加のリクエストを行う必要があるのはなぜですか?

$username をビューに渡す

$data['username'] = 'JohnDoe';
$this->load->view('index/index', $data);

PHP での三項演算子形式の使用

<?php echo ( isset($username) ) ? $username : 'Guest'; ?>

PHP で完全な長さの条件を使用する

<?php if( isset($username) ){ echo $username; } ?>
于 2012-06-22T14:25:59.373 に答える
1

次のようなものがうまくいくはずです:

$.get('/index.php/controller/method', function(data) {
  $('#signInBtn').html(data);
});

「/index.php/controller/method」は、それぞれのコントローラーとメソッドの名前に置き換えられます。

JSBin に関連付けられた HTML の完全な例を示します: http://jsbin.com/ifigih/edit

于 2012-06-22T14:31:30.680 に答える