所以我有一个问题,当我使用$ .cookie jquery插件时,我的表单似乎错误提交,我认为提前提交。
所以我的表格是:
<?php
echo form_open($this->uri->uri_string(), 'class="ajax_email_submission"');
?>
<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>
<?php
echo form_close();
?>
JS是
$(document).ready(function()
{
$('#email_submit').click(function()
{
alert('1');
var form_data =
{
users_email: $('#users_email_address').val(),
csrf_test_name: $.cookie('csrf_cookie_name')
};
alert('2');
$.ajax
({
url: 'NewsLetter/submit',
type: 'POST',
data: form_data,
success: function(msg)
{
alert('success');
},
error: function(msg)
{
alert('error');
}
});
return false;
});
});
该方法存在,如果我放入localhost / myzone / NewsLetter / submit,方法提交工作正常。
当我查看codeigniter Router类时,我发现$ _POST变量包含:
$_POST array[3]
ci_csrf_token string "3dad64d9aaaaaaaaaaaaaad2082ae55c"
signup_email string "mail@cheeeese.com"
submit string "Submit"
提交的URI是localhost / myzone / NewsLetter,因为提交在帖子而不是URI中,所以我被发送到索引方法而不是提交方法。
在JS中你会发现alert('1')
和alert('2')
。只有alert('1')
显示哪些我不知道为什么会发生这种情况!
非常感谢所有帮助
由于
答案 0 :(得分:0)
您不是通过ajax而是通过POST方法提交表单。如果您想在提交之前做一些事情,请添加
event.preventDefault()
到你的点击功能。像
$('#email_submit').click(function(event)
{
event.preventDefault();
//all your calculations and ajax than
}
将不会提交任何表格,您将推送您的ajax请求