【发布时间】:2011-12-15 16:31:35
【问题描述】:
我目前正在使用框架 CodeIgniter 开发一个项目。我使用 jQuery 1.7.1,我想用数据实现 ajax 调用以添加发布消息。
奇怪的是该函数工作并返回警报消息而没有额外的数据。但是带有数据的函数返回 HTML 500 错误(在 chrome 的控制台中)。
请求的页面只不过是一个 php 脚本回显“它可以工作!”。
有效的代码:
$.post("/ajax/add_post_to_profile",
function(data) {
alert("Data Loaded: " + data);
});
不起作用的代码:
$.post("/ajax/add_post_to_profile", { msg: "My test msg!"},
function(data) {
alert("Data Loaded: " + data);
});
更新:
这里是处理请求页面的codeigniter控制器:
class PostController extends CI_Controller {
public function __construct(){
parent::__construct();
}
public function addPostToProfile() {
echo 'It works!!!';
}
}
更新 2:
我已经使用放置在应用根目录中的新文件请求测试了该功能。然后它就像一个魅力。
看起来 CodeIgniter 控制器正在阻止 POST 请求之类的......
更新 3:
我发现这是 CodeIgniter 的 CSRF 安全。当我关闭它时它工作。 我在互联网上搜索了保留 CSRF 的解决方案,但我发现的代码不起作用:(。
<script>
$('#ajax_test').click(function() {
$.post("/ajax/add_post_to_profile", { msg: "My test msg!", csrf_token_name: "<?php echo $this->security->get_csrf_hash(); ?>"},
function(data) {
alert("Data Loaded: " + data);
});
});
</script>
【问题讨论】:
-
1) 您的代码在浏览器中的实际呈现方式,以及 2) 您是否检查过您的网络服务器日志以尝试找到服务器错误的解释?
-
你在这个 /ajax/add_post_to_profile 里面有什么?
-
1) 如果您的意思是这样,请求的页面将正确呈现。 2)错误日志没有显示任何错误,访问日志显示500错误。
-
@RicardoArruda 我用控制器代码更新了问题。
-
-1 未提供有关您如何实际调用类和方法的关键信息
标签: jquery codeigniter