所以我试图使用ajax提交一个电子邮件地址来让人们注册,但我不知道为什么我会收到500内部服务器错误。我是ajax调用的新手。
我试着遵循以下教程:http://www.youtube.com/watch?v=TZv5cgua5f0然而,我已经按照他们所说的做了,如果我做了一篇有值的帖子,我仍然没有得到想要的控制器方法。如果我确实在帖子中添加了数据,那么我会得到一个内部服务器错误。
javascript:
$('#email_submit').click(function()
{
var form_data =
{
users_email: $('#users_email_address').val()
};
$.ajax
({
url: 'http://localhost/myZone/NewsLetter/submit',
type: 'POST',
data: form_data,
success: function(msg)
{
alert(msg);
}
});
return false;
});
HTML
<div id="email_newsletter_signup" class="ajax_email_block_signup" >
<h3>Sign up to the newsletter:</h3>
<?php echo form_error('signup_email','<div id="email_error" class="error">','</div>');?>
<h3>email: <input id="users_email_address" type="email" name="signup_email" value="<?php echo set_value('signup_email'); ?>" placeholder="Your email"/> </h3>
<input id="email_submit" type="submit" name="submit"/>
</div>
控制器
public function index()
{
Assets::add_module_js('newsletter','email.js');
//If included will be added
Template::set_block('email_block','email_block');
Template::render();
}
public function submit($email)
{
$success = $this->newsletter_model->set_unverified_email($email);
// if($success === FALSE)
// {
// Template::set_block('newsletter_error','newsletter_error');
// }
// else
// {
// Template::set_block('newsletter_success','newsletter_success');
// }
// Template::render();
return;
}
我在提交中有一个断点,当我进行后期时,它不会被击中
感谢
找到了我的解决方案。与篝火无关,只与代码点火器有关。这是CSRF代币。
这是一篇关于整理问题的优秀文章:
http://aymsystems.com/ajax-csrf-protection-codeigniter-20
在发布之前将csrf令牌添加到数据中
$.ajax({
type: "POST",
url: url,
data: {'<?php echo $this->security->get_csrf_token_name(); ?>':'<?php echo $this->security->get_csrf_hash(); ?>'}
})
csrf令牌需要随每个请求一起发送,因此它需要由上面的echo语句