CodeIgniter / Ajax。通过ajax将参数发布到CodeIgniter控制器

时间:2017-06-06 19:52:06

标签: php ajax codeigniter

我试图通过ajax将一些变量发布到CodeIgniter控制器函数,但是ts会导致错误消息。

这是我的javascript函数

$(document).ready(function()
 {

    $('.add_cart').click(function(){
      var quantity = $('#qty').val();
      var product_id = $(this).data("productid");
      var product_name = $(this).data("productname");
      var product_price = $(this).data("price");

      if(quantity != '' && quantity > 0)
          {
           $.ajax({
            url:"<?php echo base_url(); ?>products/add_product_to_cart",
            method:"POST",
            data:{product_id:product_id, product_name:product_name, product_price:product_price, quantity:quantity},
            success:function(data)
            {
                alert('success');
            }
           });
          }
          else
          {
           alert("Please Enter quantity");
          }

        });
      });

这是我的控制器功能。

    public function add_product_to_cart()
{

    echo $_POST["product_id"];

}

但是当我通过firebug跟踪整个过程时。它给出了错误,即未定义的变量product_id或者当我尝试按照下面给出的回声时不打印任何东西。

这是屏幕截图 enter image description here

有人可以帮我解决如何正确执行此操作,还是有任何特殊文件需要包含在ajax函数中?

4 个答案:

答案 0 :(得分:2)

使用Codeigniter(版本2或3),您应该使用以下内容:

$product_id = $this->input->post('product_id');

以下是在Codeigniter中使用输入时的文档:

Using Codeigniter Inputs

Ajax请求(调试):

如果您正在运行ajax呼叫,请在Chrome上转到 Inspector 并查看正在发送的ajax请求,这可以显示已发送到服务器的值。 (右键单击鼠标)

Inspect -> Network (toggle on XHR)

然后使用您的表单提交ajax请求,新项目应显示在网络选项卡的表格中,单击它,转到标题,然后向下滚动。它会向您显示您的ajax请求所需的所有信息,并确保它们正确发送。

更新:

正如Kelvin所指出的那样,您需要从方法更新您的ajax以对请求进行输入。

method:"POST"type:"POST"

答案 1 :(得分:0)

$.ajax({
   url:"<?php echo base_url(); ?>products/add_product_to_cart",
   type:"POST",
   data:{product_id:product_id, product_name:product_name, product_price:product_price, quantity:quantity},
   success:function(data)
   {
      alert('success');
   }
);

method : "POST"中将其更改为type: "POST", ajax并非使用与html相同的方式。

答案 2 :(得分:0)

   var var_data = {product_id:product_id, 
                   product_name:product_name, 
                   product_price:product_price, 
                   quantity:quantity}
   $.ajax({
        url:"<?php echo base_url(); ?>products/add_product_to_cart",
        type:"POST",
        dataType : 'json',
        async : false,
        data:var_data,
        success:function(data)
        {
            alert('success');
        }
       });
控制器函数中的

从var_data

获取post数组

喜欢

   $post_data = $this->input->post('var_data',true);
   print_r($post_data);

尝试这样可能有帮助,更改方法键入

答案 3 :(得分:0)

存在语法错误

$(document).ready(function()
{

$('.add_cart').click(function(){
  var quantity = $('#qty').val();
  var product_id = $(this).data("productid");
  var product_name = $(this).data("productname");
  var product_price = $(this).data("price");

  if(quantity != '' && quantity > 0)
   {
       $.ajax({
        url:"<?php echo base_url(); ?>products/add_product_to_cart",
        method:"POST",
        data:{"product_id":product_id, "product_name":product_name, "product_price":product_price, "quantity":quantity},
        success:function(data)
        {
            alert('success');
        }
       });
      }
      else
      {
       alert("Please Enter quantity");
      }

    });
  });

参数应该是这样的 数据:{&#34; product_id&#34;:product_id,&#34; product_name&#34;:product_name,&#34; product_price&#34;:product_price,&#34;数量&#34;:数量},