jquery post数据不可见在PHP与codeigniter框架


jquery post data not visible in PHP with codeigniter framework

嗨,我使用下面的jquery发送post请求到我的PHP控制器编码,但当我从控制器传递值到模型作为参数时,我看到的是查询的结果是空的,有传递的值,但查询直接在mysql中工作。

所以问题是在获得控制器中的值后,当我把它传递给我的模型作为参数,并在查询中传递该值,没有结果出现,但应该出现。

在文档加载时调用的javascript函数:

function stockUpdate(symbol)
{
    $.post("stock/stock_update",
    {
        symbol: symbol
    },
    function success(data)
    {
        alert(data);
    }
  });
}

My PHP controller:

class Stock extends CI_Controller {
    function stock_update()
    {
        // get symbol
        $symbol = $this->input->post('symbol');
        // get the price for symbol and calculate unit price
        $result = $this->user_stock_model->get_price($symbol);
        print_r($result); // nothing gets printed
    }
}
我user_stock_model

:

class User_stock_model extends CI_Model {
    public function get_price($symbol)
    {
        // get user id
        $id = $this->session->userdata('id');
        echo $symbol; // value gets printed
        // fetch total price where symbol as given
        $sql = "SELECT shares, price FROM users_stock ".
               "WHERE id = ? and symbol = ?";
        $query = $this->db->query($sql, array($id, $symbol));
        return $query->row_array(); // empty results
    }
}

由于符号变量在此函数中不包含值,因此我的查询结果为空。

还有一件事我想告诉你,如果我从Chrome开发人员工具控制台运行完全相同的jquery脚本,它的工作绝对很好。

看起来在发送请求之前没有设置变量'symbol'(即:(在document.ready)。您是否尝试在$.post之前记录"symbol"?

实际上,jquery post请求发送给我的控制器的值是预先加上空格的。虽然直接打印值似乎很好,但查询没有返回结果。

例如:

我看到的是:'A'

实际上是:' A '

因此,当我在codeigniter的查询函数中放入echo语句时,形成的查询是:

SELECT shares, price FROM users_stock WHERE id = '11' and symbol = ' A '

因为在我的mysql表中没有记录,符号列= ' A ',因此没有返回任何东西,我认为值在那里不可见。我的坏。

简单的PHP trim()函数解决如下问题:

// get symbol
$symbol = trim($this->input->post('symbol'));