Jquery Post не передает данные в URL-адрес с помощью каркаса Codeigniter - PullRequest
0 голосов
/ 30 мая 2018

Я впервые испытываю это.У меня есть скрипт 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 View:

      <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.Спасибо

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вот так я и понял.Просто потому, что я использую функцию безопасности CSRF codeigniter, в мою форму добавляется скрытое поле ввода:

    <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 голосов
/ 04 июня 2018

Использование форм codeigniter

$args = [
'id' => 'votreq',
'name' => 'form',
];
echo form_open('user/addvotemate', $args);

Это заменяет:

<form id="votreq" name="form" method="POST">

Это автоматически экранирует входные данные вашей формы.Гораздо безопаснее.Пожалуйста, используйте руководство по codeigniter, оно очень полезно.

...