jquery post返回呈现的html页面而不是sql结果
Posted
技术标签:
【中文标题】jquery post返回呈现的html页面而不是sql结果【英文标题】:jquery post returning rendered html page rather than sql result 【发布时间】:2014-06-01 10:42:09 【问题描述】:我在我的应用程序中使用 codeigniter,并且有一个运行良好的 jquery post 函数。
$.post('getticketstacktype', ticketnumber:ticketnumber,function(result)
alert(result);
然后我在另一个编辑页面上使用完全相同的发布功能。此页面预填充了 php 并且可以正常工作。
我用同一个帖子打电话给我的控制器,我检查了ticketnumber值是否正确
$.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 帖子。
我也验证了两个视图的post信息和firebug是一样的。
有什么建议吗? 一如既往的感谢。
【问题讨论】:
尝试在$.post
- dataType: 'json'
中指定。
【参考方案1】:
这通常发生在后端发生致命错误时。当 PHP 发生致命错误时,它会构建一个页面以显示包含在框中的一些错误消息。 jQuery 试图解释一个有意义的数据,但它失败了。如果您在 Firebug 或 Google Chrome 开发工具中看到此响应,您实际上可以看到该页面可以呈现。
-
使用 Firebug 或 Google Chrome 开发工具跟踪从服务器发回的结果
确保您的后端没有错误
【讨论】:
谢谢,我理解你的意思,因为你通常可以看到失败的 php 错误,但这是被调用的函数或模型的本地错误。这将呈现调用所在的当前页面。 这很奇怪,你能确定控制器没有将请求重定向到当前页面吗?【参考方案2】:我认为你需要这个:
在你的头文件中定义一个脚本标签:
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 panel
和console
。祝你好运。 :D
【讨论】:
以上是关于jquery post返回呈现的html页面而不是sql结果的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法像真正的 html 元素而不是画布或 svg 一样呈现 pdf.js 页面?
在 NodeJs 中呈现 jquery POST 请求的响应