Получить данные поста в контроллере используя форму отправки ajax - PullRequest
0 голосов
/ 16 мая 2018

Я отправляю эту форму, используя ajax, и я хочу, чтобы все данные поста в контроллере отправляли форму в базу данных. Но она не работает.

$('#myForm').on('submit', function(e){
   $.ajax({
     url : controllerUrl, 
     type : 'POST',
     data : $(this).serialize(),
     success : function(data) {

     }
   });
});

Ответы [ 5 ]

0 голосов
/ 18 мая 2018

Предположим, это ваша форма

html

<form name="form" id="form1">
    <input type="text" name="name">
    <input type="text" name="email">
    <a class="adddata">send</a>
</form>

AddCategories - это имя контроллера, а addProductsCategories - это имя метода.

js

$(".adddata").on('click',function(){
var addCat= new FormData($("#form1")[0]);

$.ajax({

    url : baseurl+"AddCategories/addProductsCategories",
    type :"POST",
    data :addCat,   
    contentType:false,
    processData:false,
    success:function(res)
    {
        alert("Good job!");
        window.location.reload();
    }
  });
});

контроллер

public function addProductsCategories()
{
   $result=array
    (
      "name"=>$_POST["name"],
      "email"=>$_POST["email"],
    );

   $this->db->insert("tbl_name",$result);
}
0 голосов
/ 16 мая 2018

Предположим, это ваша форма

<form name="form1" id="form1">
    <input type="text" name="t1">
    <input type="text" name="t2">
    <input type="submit" name="sbtn" id="sbtn">
</form>

Поместите это в нижний колонтитул

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
    var BASE_URL ="<?= base_url(); ?>";
    $( "#form1" ).submit(function( event ) {
        event.preventDefault();
        $.ajax({
            type: 'POST',
            url: BASE_URL + "controller/methodName",
            data: =$("#form1").serialize(),
            success: function (data) {
                data = JSON.parse(data);

            }
        });
    });
</script>

И, наконец, поместите это в свой контроллер

function methodName()
{
    echo $t1=$this->input->post('t1');
    echo $t2=$this->input->post('t2');
}
0 голосов
/ 16 мая 2018

Лучше попытайтесь дать ему имя для значения, которое вы передаете на следующую страницу

$('#myForm').on('submit', function(e){
     $.ajax({
         url : controllerurl, 
         type : 'POST',
         data : {values:$(this).serialize()},
         success : function(data) {
             alert(data);
         }
     });
});
0 голосов
/ 16 мая 2018
var your_data = "your data";
var url = "<?php echo base_url('my_controller/my_method') ?>";

$.post( url, { data: your_data}, function(response) {
alert(response);
});

для my_controller

public function my_method() {
   $data = $this->input->post('data');
   echo 'Found: ' . $data;   
}
0 голосов
/ 16 мая 2018

Надеюсь, это поможет вам:

используйте site_url или base_url вместо controllerUrl

Примечание : замените controller_name и method_name на свой контроллер и метод

$('#myForm').on('submit', function(e){
     $.ajax({
         url : "<?php echo site_url('controller_name/method_name');?>", 
         type : 'POST',
         data : $(this).serialize(),
         success : function(data) {
             alert(data);
         }
     });
});

Ваша структура контроллера должна быть такой:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Controller_name extends CI_Controller {

    public function __construtct()
    {
       parent::__construtct();
       $this->load->helper('url');
    }

    public function method_name()
    {
       print_r($this->input->post());
       die;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...