我试图用 AJAX 发送一个值到Codeigniter的控制器文件,但是没有成功。我已经搜索了这个问题,我现在这个问题在这里做了很多次,但是仍然没有找到解决方案。希望有人能帮助我。谢谢!
Js文件。
function submitSend()
{
var message = $('#sms').val();
if(message == "")
{
$("#sms").attr("placeholder", "Type a message please...");
return false;
}
$.ajax(
{
url: "<?php echo base_url();?>/mychat/send",
type: 'POST',
data:{
'<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>',
'message': message
},
success: function (data)
{
window.console.log('Successful');
},
error :function(data)
{
window.console.log('Failed');
}
});
}
控制器函数。它在名为MyChat的文件中。
public function send()
{
$message = $this->input->post('message');
echo $message;
}
6条答案
按热度按时间rmbxnbpk1#
在包含JS文件之前,将此代码添加到页脚视图中
在任何需要的地方调用这些变量
vtwuwzda2#
恐怕你不能在
JavaScript
文件中使用PHP
标记,因为你已经提到你有一个JS
文件。必须在**
.php
文件中运行PHP
代码。也许你可以把
submitSend()
函数分离一下,通过提取PHP
标签和$('#sms').val()
使它更模块化。这些标签可以作为参数传递给函数,从你调用它的地方(.php
文件)**。jtoj6r0c3#
很可能是因为CSRF令牌,请尝试禁用csrf并检查是否是由于csrf,然后将csrf配置中的特定功能列入白名单
rekjcdws4#
这对我有用。
/应用程序/配置/安全性.php
在我的表单中
在脚本.js中
cfh9epnr5#
用于代码点火器4
首先,转到app/Config/Security.php
变更
结束日期
注意:将
$regenerate
变更为false并不是良好的作法。第二步,转到app/Config/Routes.php创建您路由器,您将调用该路由器来执行请求。
然后确保u将
csrf_token()
和csrf_hash()
添加到要发送的数据中。所以代码看起来像这样:
控制器:
Codeigniter中的另一件事是,当请求未能通过CSRF验证检查时,默认情况下它将重定向到上一页,这样用户就看不到错误。要关闭它,请转到app/Config/Security.php
变更
至
sf6xfgos6#
你不能在js文件中使用php标签
在.php文件中,只能在脚本标记中使用php标记,如下所示
或在页眉html中添加此行
并在js文件中使用它