【问题标题】:How to acess the Data passed to a CodeIgniter Controller如何访问传递给 CodeIgniter 控制器的数据
【发布时间】:2014-10-15 07:50:08
【问题描述】:

您好,我无法访问我发布到 CI 控制器的数据。 $id 变量没有分配给任何东西。这是将发布数据分配给控制器中的变量的正确方法吗?

视图/AngularJs

addanswers = function() {
    var id = $scope.idSelectedPoll;

    $http({
    url: 'polls/json_get_answers',
    method: "POST",
    datatype : "json",
    data: JSON.stringify({'id':id}),
    }).success(function (data) {
    $scope.answers = data;
    });


    }

控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Polls extends CI_Controller {
function __construct() {
parent::__construct();
}

function index() {
$data['title'] = 'Poll Viewer';
$data['viewname'] = 'pollBrowser';
$data['scripts']['polls'] = 'polls';
$data['content'] = $this->load->view('polls/pollBrowser',$data, TRUE);

$this->load->helper('html');
$this->load->view('templates/master',$data);
}

function json_get_answers()

{    
$id = $this->input->post('id');
$this->load->model('Poll','poll');
$data = $this->poll->get_json_answers_data($id);
print json_encode($data);
}
}

型号

 <?php
class Poll extends CI_Model {
function __construct() {
parent::__construct();
 $this->load->database();
}
function get_json_answers_data($id) {
$this->db->from('Answers');
$this->db->where("answerSet",$id);
$this->db->order_by('id');
$query = $this->db->get();

return $query->result();
}
}

我添加了一张在单击列表中的项目后发送帖子数据的图像。这是它应该看起来的样子吗? Request Payload 表明它似乎正确地发布了“id”数据。

【问题讨论】:

  • echo var_dump($_POST);并回显 print_r($_POST);都说数组是空的

标签: php angularjs codeigniter


【解决方案1】:

你能看看 id 是否存在于 $_POST 中吗?

如果是这样,看看这篇关于Codeigniter $this->input->post() empty while $_POST is working correctly的帖子

【讨论】:

【解决方案2】:

首先尝试json_decode数据

$data = json_decode($this->input->post());
$id = $data['id'];

【讨论】:

    【解决方案3】:

    在 angularjs 函数中的 post 调用存在问题,不完全确定为什么需要这样发送数据或为什么必须声明标题。如果有人可以解释这个答案背后的原因,那将不胜感激。谢谢大家的帮助!

    addanswers = function() {
        var id = $scope.idSelectedPoll;
    
        $http({
        url: 'polls/json_get_answers',
        method: "POST",
        datatype : "json",
        data: 'id=' + id,
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        }).success(function (data) {
        $scope.answers = data;
        });
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      相关资源
      最近更新 更多