Php Post方法在Codeigniter中不起作用

Php Post方法在Codeigniter中不起作用,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,我正在使用HMVC codeigniter。我第一次尝试使用jQueryAjax。当我使用POST时,它会给出未定义的错误,而使用GET时它会响应我的数据 $.ajax({ type: "POST", url: filelink+"cart/add_cart_item", data: {"product_id":id,"quantity":qty,"ajax":"1"}, dataType: "js

我正在使用HMVC codeigniter。我第一次尝试使用jQueryAjax。当我使用POST时,它会给出未定义的错误,而使用GET时它会响应我的数据

         $.ajax({
          type: "POST",
          url: filelink+"cart/add_cart_item",
          data: {"product_id":id,"quantity":qty,"ajax":"1"},
          dataType: "json",
              success: function(msg){
           alert( "Data Saved: " + msg );
           },
               error: function(jqXHR, textStatus, errorThrown){ 
           alert(textStatus + " " + errorThrown);
            }
      });
在谷歌搜索和搜索之后,我一直在尝试什么-

  • 我的文件url位置可以直接访问。我查过了。给予回应

  • Firebug为同一文件提供500个内部服务器错误

  • 使用Get可以很好地回复我

  • 在数据类型中添加了json

  • 控制器功能

      class Cart extends CI_Controller { // Our Cart class extends the Controller class
    
      function __construct()
         {
        parent::__construct();  
        $this->template->set('controller', $this);
         }
    
      function _remap()
        {
           $uri2 = $this->uri->segment(2);  
           if (is_numeric($uri2) OR $uri2 == FALSE) {
            $this->index(); 
           } else if ($uri2 == 'add_cart_item') {
            $this->add_cart_item();
           } else if ($uri2 == 'show_cart') {
            $this->show_cart();
           }
         }
    
    function add_cart_item(){
          echo "asdfsadfdsf";
          exit; 
        }
      }
    

    有人能帮我吗?

    你的问题可能有原因

    您可能正在使用未加载的模型。
    模型中可能存在一些代码问题。
    您可能不会返回模型中的任何内容并对其进行响应。

    此外,如果您需要返回数据,请使用echo json_encode($data)

    这可能是您出现问题的原因

    您可能正在使用未加载的模型。
    模型中可能存在一些代码问题。
    您可能不会返回模型中的任何内容并对其进行响应。

    另外,如果您需要返回数据,请使用echo json_encode($data)

    有时,当您将站点加载为但ajax调用中的url为时,会出现此问题。

    有时,当您将站点加载为但ajax调用中的url为时,会出现此问题。

    设法找到解决方案。该问题是由于与表单一起发送的CI_令牌造成的。这是不存在的,因为POST方法给出了500个内部服务器错误。我在我的视图文件中添加了以下内容

     <?php echo form_open_multipart(); ?>
     <?php echo form_close(); ?>
    
    这就解决了问题。我不确定,但这被称为CSRF相关的一些问题


    谢谢

    找到了解决方案。该问题是由于与表单一起发送的CI_令牌造成的。这是不存在的,因为POST方法给出了500个内部服务器错误。我在我的视图文件中添加了以下内容

     <?php echo form_open_multipart(); ?>
     <?php echo form_close(); ?>
    
    这就解决了问题。我不确定,但这被称为CSRF相关的一些问题


    感谢您使用了_remap函数,在获得$uri2后,有一个if检查,它检查您在ajax请求中传递的数量变量,它可能有整数值,很明显可能包含一些整数。 有

    $this->uri->segment();
    
    返回给您:

    product_id=id
    quantity=qty
    ajax=1
    
    通过调用

    $uri2 = $this->uri->segment(2); 
    
    它将向您返回数量,而您的代码中没有定义index()函数,这将导致500个错误

    function _remap()
    {
       $uri2 = $this->uri->segment(2);  
       if (is_numeric($uri2) OR $uri2 == FALSE) {
        $this->index(); 
       } else if ($uri2 == 'add_cart_item') {
        $this->add_cart_item();
       } else if ($uri2 == 'show_cart') {
        $this->show_cart();
       }
     }
    

    您已经使用了_remap函数,在获得$uri2之后,有一个if检查,它检查您在ajax请求中传递的数量变量,它可能有整数值,很明显可能包含一些整数。 有

    $this->uri->segment();
    
    返回给您:

    product_id=id
    quantity=qty
    ajax=1
    
    通过调用

    $uri2 = $this->uri->segment(2); 
    
    它将向您返回数量,而您的代码中没有定义index()函数,这将导致500个错误

    function _remap()
    {
       $uri2 = $this->uri->segment(2);  
       if (is_numeric($uri2) OR $uri2 == FALSE) {
        $this->index(); 
       } else if ($uri2 == 'add_cart_item') {
        $this->add_cart_item();
       } else if ($uri2 == 'show_cart') {
        $this->show_cart();
       }
     }
    

    您是否尝试过
    var\u dump($this->input->post('product\u id')?它输出了什么吗?@Vikassarma:filelink包含什么?@Vikassarma和你的基本url()看起来像什么?您是否尝试过使用完全限定的url?或者只是控制器的名称加上方法?@Vikassarma如果您正常访问控制器,它是否工作?我看到您实际上在使用hmvc,但您的“e”仍然在扩展ci_控制器而不是Mx_控制器。@Kyokasuigetsu我对这个codeigniter和hmvc非常陌生。实际上,这是其他控制器的设计方式。其他页面使用main.php作为外部模板文件,它们之间通过load partial显示内容。这可能是造成问题的原因吗????他们都在使用ci_控制器。我复制了相同的…您是否尝试过
    var_dump($this->input->post('product_id')?它输出了什么吗?@Vikassarma:filelink包含什么?@Vikassarma和你的基本url()看起来像什么?您是否尝试过使用完全限定的url?或者只是控制器的名称加上方法?@Vikassarma如果您正常访问控制器,它是否工作?我看到您实际上在使用hmvc,但您的“e”仍然在扩展ci_控制器而不是Mx_控制器。@Kyokasuigetsu我对这个codeigniter和hmvc非常陌生。实际上,这是其他控制器的设计方式。其他页面使用main.php作为外部模板文件,它们之间通过load partial显示内容。这可能是造成问题的原因吗????他们都在使用ci_控制器。我复制了相同的…但我在整个网站上使用相同的。Url很好,但我在整个网站上都使用相同的Url。Url很好..嗨Raheel,我编辑了我的代码。请看一下控制器。我没有使用任何模型。这是问题吗?嗨,拉希尔,我编辑了我的代码。请看一下控制器。我没有使用任何模型。这就是问题所在吗??