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 回答