【问题标题】:How to use a value in an AJAX callback in PHP code in the same page?如何在同一页面的 PHP 代码中的 AJAX 回调中使用值?
【发布时间】:2017-12-23 09:44:29
【问题描述】:

这是我第一次使用 AJAX。我完全不明白这里的数据流。请帮助。我在codeigniter中做 这是我的代码EDITED

我的视图页面中的js函数:

    function selectHandler() {
      var selectedItem = chart.getSelection()[0];

      if (selectedItem) {
        var topping = data.getValue(selectedItem.row, 0);

       $.post("http://localhost/offlearn/index.php/ctrl_offapp/trail2",
    {
      top: topping,

    },
    function(res,status){
       // alert(res);
        document.getElementById('tablePrint').innerHTML = res;
    });
    }
    }

trial2 是我的控制器功能。

你能帮忙吗?

**codeigniter中的trial2函数是**:

    public function trail2(){
$var=$this->input->post('top');
$data['ts'] = $this->offapp_database->get_tasks();
$data['u'] = $this->offapp_database->usermaster();
print_r($data['ts']);
exit;
$myTable= '<table><tr><td >TASK NAME</td><td >ASSIGNED TO</td><td >CREATED BY</td></tr>';

 foreach($ts->result() as $tk)
     {  
     if ($tk->status ==  0 ) {         
     $myTable.= '<tr><td >'.$tk->taskname.'</td><td >';  foreach($u->result() as $usr)
     { if ($usr->id ==  $tk->assignto) {echo $usr->fname;}}
     $myTable.= '</td><td >';
    foreach($u->result() as $usr)
     { if ($usr->id ==  $tk->createdby ) {echo $usr->fname;}}
     $myTable.=' </td></tr>';
     $myTable.='</table>';
     echo $myTable ;
}
   }    
 }

模型中的功能

    public function get_tasks()
    {
     $this->db->select('*');
     $this->db->from('tasks ');
     $rslt = $this->db->get();
     return $rslt;
     }
   public function usermaster()
  {
   $this->db->select('*');
   $this->db->from('usersmaster ');
   $rslt = $this->db->get();
   return $rslt;
  }

在这里,我尝试在视图页面的 div 'tableprint' 中显示分配给变量 $myTable 的表。 这是我得到的输出:

CI_DB_mysqli_result 对象 ( [conn_id] => mysqli 对象 ( [affected_rows] => 108 [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $ [client_version] => 50011 [connect] 0 [connect_error] => [errno] => 0 [error] => [error_list] => Array () [field_count] => 19 [host_info] => localhost via TCP/IP [info] => [insert_id] = > 0 [server_info] => 5.5.5-10.1.16-MariaDB [server_version] => 50505 [stat] => 正常运行时间:639 线程:1 问题:11 慢查询:0 打开:20 刷新表:1 打开表:每秒平均 13 次查询:0.017 [sqlstate] => 00000 [protocol_version] => 10 [thread_id] => 3 [warning_count] => 0) [result_id] => mysqli_result Object ([current_field] => 0 [field_count] = > 14 [长度] => [num_rows] => 77 [type] => 0) [result_array] => Array () [result_object] => Array () [custom_result_object] => Array () [current_row] => 0 [行数] => [行数据] => )

请帮助我知道我哪里出错了

【问题讨论】:

    标签: javascript php jquery ajax codeigniter


    【解决方案1】:

    你不能。您似乎对网页的生成和处理方式理解不佳,根据您的回答,我认为是 AJAX 在您的脑海中混杂了一些东西。

    PHP 代码由服务器解释。 JS代码由浏览器解释。

    但是,AJAX 使得从 JS 代码调用 PHP 代码成为可能,我相信这就是让你感到困惑的地方。

    AJAX 包括从 JavaScript 代码发送 HTTP 请求和接收 HTTP 响应,这允许开发人员除其他外向 PHP 脚本发送数据并接收其他数据。

    但请记住,当您这样做时,您的 JS 使用的唯一 PHP 代码是响应您的 AJAX 请求的代码。您的页面中不能包含由浏览器神奇地解释的 PHP 代码,以便它可以使用 AJAX 发送的数据。

    让我更加假设您尝试应用 AJAX 却不了解的是,您在 AJAX 调用后收到的数据可能是由 PHP 制作和传输的,为什么不应用您想在该资源上应用的任何 PHP 代码那时的数据,在您的 PHP 代码将其发送到您的页面之前?

    【讨论】:

    • 感谢您的回复。我想我必须学习一点 AJAX 才能知道它是如何工作的。
    • @AnnaMary 如果他的回答对你有帮助,你应该点赞或选择它作为答案
    【解决方案2】:

    http://localhost/offlearn/index.php/ctrl_offapp/trail2 中生成 HTML 并返回。

    然后,在 AJAX 回调中,使用以下内容设置 html: ...

    }, function(res, status) {
        $('#tablePrint').html(res);
    });
    

    ...

    【讨论】:

    • 感谢您的回复。我使用它并在该控制器函数中生成了 html 表(在 url 中提到),我使用单个 qoutes 将 html 表分配给变量 $myTable,除了 php 行之外,一切都在工作。
    • 我对我的代码进行了一些更改,使其运行得更好,但输出不正确。你能帮我找出我哪里出错了吗?
    【解决方案3】:

    您应该更清楚地提出问题,因为我确实了解您的函数是一个 javascript 函数,您可以在代码中像这样调用它。

    function selectHandler() {
      var selectedItem = chart.getSelection()[0];
      if (selectedItem) {
        var topping = data.getValue(selectedItem.row, 0);
        $.post("http://localhost/offlearn/index.php/ctrl_offapp/trail2", {
          top: topping,  
        }, function(res, status) {
          //alert(res);
          test(res);
        });
      }
    }
    

    【讨论】:

    • 感谢您的回复
    • 对不起 - 我的意思是用 PHP 编写整个 top() 函数,然后回显它。该回显将分配给 AJAX 请求中的 res。
    • 现在我已经在mvc中添加了所有功能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2018-04-25
    相关资源
    最近更新 更多