我正在尝试从php代码访问jquery ajax的输出。但我不知道为什么它会返回整页html包括结果。任何人都可以告诉我这件事。在firefox控制台它显示我的页面HTML的响应,包括PHP结果。但是在jquery代码中,console.log没有命中。
这是jquery代码
function getprofile()
{
$.ajax({
url: 'Userpage/get_profile',
//data: {'title': title}, change this to send js object
type: "post",
dataType: 'json',
data: {'userid': 1},
success: function(data) {
console.log(data);
}
});
}
我的PHP代码
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Userpage extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->helper('url');
$this->load->helper('form');
$this->load->library("session");
$this->load->model("Userpage_model");
$this->load->view('Userpage_view');
}
public function index()
{
}
public function get_profile()
{
$data = array();
$post_id = $this->input->post('userid');
$data['comments'] = $this->Userpage_model->get_profile($post_id);
echo json_encode($data['comments']);
exit;
}
}
?>
请查看代码并告诉我出错的地方
由于
答案 0 :(得分:1)
使用exit
public function get_profile()
{
$data = array();
$post_id = $this->input->post('userid');
$data['comments'] = $this->Userpage_model->get_profile($post_id);
echo json_encode($data['comments']);
exit; // use exit here
}
修改强>
PHP使用一个名为header()
的特殊函数在渲染过程中设置页面的属性。
答案 1 :(得分:1)
你需要从你的功能返回,使用退出很好,但这不是一个好习惯
public function get_profile()
{
$data = array();
$post_id = $this->input->post('userid');
$data['comments'] = $this->Userpage_model->get_profile($post_id);
return json_encode($data['comments']);
}
答案 2 :(得分:0)
您正在使用CI。从这个ajax电话:
$.ajax({
url: 'Userpage/get_profile',
success: function(data) {
console.log(data);
}
});
您希望在用户页面控制器内对 get_profile 操作进行ajax调用,这可能会返回:
{
"comments": [
{ ... },
{ ... },
{ ... },
...
]
}
将在浏览器控制台中记录。
但是你得到了意想不到的结果,对吧?
我认为,你的ajax调用会导致错误。要证明这一点,请修改您的ajax调用:
$.ajax({
url: 'Userpage/get_profile',
success: function(data) {
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown) {
// add this function to logs error
console.log(textStatus + ': ' + errorThrown);
}
});
现在,如果ajax调用导致错误,您可以在浏览器控制台中看到错误。我很确定你会在浏览器控制台中收到错误:找不到。
您正在使用CI,URL类似于:
http://<something>/index.php/site/index
在这个页面中,如果你使用url Userpage / get_profile进行ajax调用,浏览器真正做的是调用ajax:
http://<something>/index.php/site/index/Userpage/get_profile
而不是您的期望:
http://<something>/index.php/Userpage/get_profile
要解决此问题,您必须在ajax调用中更改 url 的值,以指向上面的正确网址。
通过使用CI,可以在 site_url()功能的帮助下生成上面的absoulte URL:
site_url('Userpage/get_profile')
我通常在HTML中的某处打印此URL,并在ajax调用期间从javascript中检索它。