这是我第一次经历这种情况。我有一个向服务器提交表单数据的jquery脚本(PHP)。当我使用另一个模板时,这个脚本工作得很好,但是当我切换到另一个模板时,脚本就无法正常工作了。在我想知道到底是哪里出了问题的过程中,我注意到$.post没有向url发送任何数据。
<script>
$(document).ready(function() {
$("#addvotemate").click(function() {
var vuniq_userid = $("#vuniq_userid").val();
var vmuniq_userid = $("#vmuniq_userid").val();
//alert("I work to this point");
if (vuniq_userid == '' || vmuniq_userid == '' ) {
alert("Request Failed Try Again");
} else {
// alert(vuniq_userid +' '+ vmuniq_userid);
$.post("<?php echo site_url('user/addvotemate'); ?>", {
vuniq_userid1: vuniq_userid,
vmuniq_userid1: vmuniq_userid
}, function() {
alert("Message Sent");
$('#votreq')[0].reset(); // To reset form fields
});
}
});
});
</script>
我正在使用Codeigniter 3X,模板引导程序3,jquery.1.11.1.min.js视图:
<div id="votm">
<form id="votreq" name="form" method="POST">
<input type="hidden" id="vuniq_userid"
name="vuniq_userid" value="<?php echo $_SESSION['uniqueID'] ?>">
<input type="hidden" id="vmuniq_userid"
name="vmuniq_userid" value="<?php echo $pid ?>" >
<btn class="btn btn-sm btn-azure btn-icon"
id="addvotemate"><i class="fa fa-fw fa-users"></i> Add Votemate</btn>
</form>
</div>
我需要你的帮助,因为我甚至不知道如何解决这个问题。我尝试了不同的方法,但仍然没有成功。我用过jsfidle。谢谢
发布于 2018-06-04 09:07:32
使用codeigniter表单
$args = [
'id' => 'votreq',
'name' => 'form',
];
echo form_open('user/addvotemate', $args);
这将取代:
<form id="votreq" name="form" method="POST">
这会自动转义表单输入。更安全。请使用codeigniter手册,它非常有用。
发布于 2018-06-04 12:17:51
我就是这么想出来的。很简单,因为我使用了codeigniter CSRF Security特性,所以在我的表单中添加了一个隐藏的输入字段:
<input type="hidden" name="csrf_test_name"
value="cc0294deffcc52f34bcdbcxxxxxxxxx" />
我通过firefox浏览器调试器的开发人员工具检测到了这一点。以下是我的初始脚本,其中不包含csrf隐藏字段:
<script>
$(document).ready(function() {
$("#addvotemate").click(function() {
var vuniq_userid = $("#vuniq_userid").val();
var vmuniq_userid = $("#vmuniq_userid").val();
//alert("I work to this point");
if (vuniq_userid == '' || vmuniq_userid == '' ) {
alert("Request Failed Try Again");
} else {
// alert(vuniq_userid +' '+ vmuniq_userid);
$.post("<?php echo site_url('user/addvotemate'); ?>", {
vuniq_userid1: vuniq_userid,
vmuniq_userid1: vmuniq_userid
}, function() {
alert("Message Sent");
$('#votreq')[0].reset(); // To reset form fields
});
}
});
});
</script>
因此,我决定在我的脚本中包含隐藏字段,如下所示:
<script>
$(document).ready(function() {
$("#addvotemate").click(function(e) {
e.preventDefault();
var csrf = $('[name="csrf_test_name"]').val();
var vuniq_userid = $("#vuniq_userid").val();
var vmuniq_userid = $("#vmuniq_userid").val();
if (vuniq_userid == '' || vmuniq_userid == '' ) {
alert("Request Failed Try Again");
} else {
$.post("<?php echo site_url('user/addvotemate'); ?>", {
csrf_test_name: csrf,
vuniq_userid1: vuniq_userid,
vmuniq_userid1: vmuniq_userid
}, function() {
alert("Message Sent");
$('#votreq')[0].reset(); // To reset form fields
});
}
});
});
</script>
完成此操作后,我的Ajax脚本开始正常工作。
https://stackoverflow.com/questions/50612065
复制相似问题