CodeIgniter AJAX 错误返回同一页面
Posted
技术标签:
【中文标题】CodeIgniter AJAX 错误返回同一页面【英文标题】:CodeIgniter AJAX bug returning same page 【发布时间】:2011-01-11 11:42:47 【问题描述】:当我尝试使用 jQuery 发出 AJAX 请求作为响应时,我得到了同一页面的 html! 这是一个实时预览(由于我正在修复它,编辑不可用)
这是我的文件 编辑:我对一些文件进行了更改
主控制器:
Class Main extends Controller
function Main()
parent::Controller();
function index()
$this->load->view('oxila_index');
Oxila_index 视图(仅 JS 其余的 html 在上面的链接中)
<script type="text/javascript">
$(document).ready(function()
$("#inv").hide();
);
$(document).ready(function()
$("#submit").click(function(evt)
$.post("/ajax/process",
url: $("#url").val()
, function(response)
$("#output").html("");
$("#inv").show("slow");
$("#output").html(response);
, "text");
evt.preventDefault();
);
);
</script>
Ajax 控制器
Class Ajax extends Controller
function process()
$data['url'] = $this->input->post('url');
$this->load->view('test',$data);
echo "hello world";
【问题讨论】:
您能添加更多代码吗?输出没有意义。 echo $this->input->post('lurl');你有一个 $this->load->view() 某处...... 那么,视图 test.php 包含什么? 哎呀,忘记了,但它包含简单的 嘿伙计,我也遇到了同样的问题(但我没有使用 codeIgniter),你是怎么解决的? 【参考方案1】:我刚刚尝试了您的页面,它运行良好。仅供参考,我在 Linux 中使用 google chrome。
不过,我有一些笔记。首先,将script
从<head>
移动到页面底部,在</body>
上方。这是最佳实践,因为加载 js 代码会阻止同时加载其他页面元素、css 和图像。
其次,如果您不更改服务器端的任何内容,请使用GET
而不是POST
。为了避免在 IE 中缓存,只需添加另一个具有随机值的参数即可。
第三,$("#output").html("");
这行不是必须的。您可以放置$("#output").html(response);
,因为.html()
将替换容器内的任何现有内容。无需清空。
【讨论】:
是的,我昨晚修复了它,我稍微添加了解决方案,感谢您的提示:)【参考方案2】:这是论坛里的一个人告诉我的
你肯定有一些东西。我输入的每一条路径 在网址引导我到家之后 页面。
尝试将您的 URL 协议从 AUTO到别的东西。 (这可以是 在 config/config.php 文件中找到)
我将其更改为“REQUEST_URI”,它可以工作!
【讨论】:
【参考方案3】:您没有您的测试功能和您的模型来处理发布请求的视图不存在
【讨论】:
【参考方案4】:确保您的配置将此设置设为 FALSE;
$config['compress_output'] = FALSE;
【讨论】:
【参考方案5】:为什么要公开功能?
public function test()
echo $this->input->post('lurl');
删除 public 并使其成为其他任何人的功能:http://codeigniter.com/user_guide/general/controllers.html
还尝试在 javascript 中包含整个 URL 以尝试是否有效:
$.post("http://yourwebsite/oxila/test/")
【讨论】:
以上是关于CodeIgniter AJAX 错误返回同一页面的主要内容,如果未能解决你的问题,请参考以下文章
我一直在codeigniter的ajax网址中找不到404错误
在 codeigniter 中,如何将数组值从控制器传递到同一视图页面?