首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Jquery Post没有使用Codeigniter框架将数据传递给url

Jquery Post没有使用Codeigniter框架将数据传递给url
EN

Stack Overflow用户
提问于 2018-05-31 03:23:02
回答 2查看 66关注 0票数 0

这是我第一次经历这种情况。我有一个向服务器提交表单数据的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。谢谢

EN

回答 2

Stack Overflow用户

发布于 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手册,它非常有用。

票数 1
EN

Stack Overflow用户

发布于 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脚本开始正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50612065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档