jquery post返回渲染的html页面而不是sql结果

时间:2014-04-17 08:40:28

标签: jquery codeigniter http-post render-html

我在我的应用程序中使用codeigniter并且有一个完美运行的jquery post函数。

$.post('getticketstacktype', {ticketnumber:ticketnumber},function(result) {
alert(result);
}

然后我在另一个编辑页面上使用完全相同的post函数。此页面预装了PHP并且工作正常。

我使用相同的帖子来调用我的控制器,我已经检查过票号是否正确

$.post('getticketstacktype', {ticketnumber:ticketnumber},function(result) {
alert(result);
}

它调用的控制器功能是:

function getticketstacktype(){    
    if (isset($_POST['ticketnumber'])){
        $ticketnumber = $_POST['ticketnumber'];            
        $data = $this->wos_model->getticketstacktype($ticketnumber);
        $this->output->set_content_type('application/json')->set_output(json_encode($data));
        }
    }

现在这可以正常工作,结果是'7'但是,在我的编辑页面上,它返回我呈现的整个视图页面: 所以<html><head>......</html> hundereds of lines)

我无法弄清楚为什么我的整个页面会在另一个视图中工作时返回到jquery帖子。

我还验证了两个视图中的帖子信息与firebug相同。

有什么建议吗? 一如既往地谢谢。

2 个答案:

答案 0 :(得分:1)

这通常发生在后端发生致命错误时。当PHP上发生致命错误时,它会构造一个页面以显示包含在框中的一些错误消息。 jQuery尝试解释为有意义的数据,但它失败了。如果您在Firebug或Google Chrome Dev工具中看到此响应,您实际上可以看到该页面可以呈现。

  1. 使用Firebug或Google Chrome Dev工具来追踪从服务器发回的结果
  2. 确保后端没有错误

答案 1 :(得分:0)

我认为你需要这个:

在标题中定义脚本标记:

var base_url = '<?php echo base_url() ?>'; //here we keep the base url in a variable to use in our js files

然后在上面的行下面加js file调用你的ajax,这样我们就可以访问上面的变量了。

现在您的ajax function需要像这样更改:

$.post(base_url+'controller_name/getticketstacktype/', {ticketnumber:ticketnumber},function(result) { //here if you see the absolute path to the funciton is given
    alert(result);
}

如果有错误,您还需要检查您的萤火虫net panelconsole是否有任何错误。祝你好运。 :d