【问题标题】:How can I send array from controller angularjs to codeigniter controller?如何将数组从控制器 angularjs 发送到 codeigniter 控制器?
【发布时间】:2014-02-11 04:54:48
【问题描述】:

您好,我是 Angular js 和 codeigniter 的新手。

所以我在将对象从 angularjs 服务发送到 codeigniter 控制器时遇到了问题。

有我的代码。

角度(service.js):

help.updateProductService = function(products){
        return help.http({
            url: "/www/Rubee/index.php/pages/editProduct/",
            method: "POST",
            data: $.param({
                "product" : products 
            }),
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        })
    }

codeigniter (pages.php):

public function editProduct(){
        print_r($_POST);
        print_r($this->input->post('product'));
    }

我得到一个错误“不允许的键字符。$$hashKey” 所以我的代码错了吗?或者有什么更好的方法来解决这个问题?

已解决=======================================

所以如果你有和我一样的问题,去你的文件夹 系统/核心/input.php

找到函数_clean_input_keys($str),函数块应该是这样的:

function _clean_input_keys($str)
{
    if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
    {
        exit('Disallowed Key Characters.');
    }

    // Clean UTF-8 if supported
    if (UTF8_ENABLED === TRUE)
    {
        $str = $this->uni->clean_string($str);
    }

    return $str;
}

所以你可以看到包含正则表达式的preg_match。 您可以将异常添加到该正则表达式中。 或者如果您不知道该怎么做,只需阻止该代码并仅返回 $str。

【问题讨论】:

  • ehmm... 仍然无法正常工作。如果我尝试数据,并使用 chrome 调试我的 javascript。在网络选项卡中,我可以看到我的角度发送的数据。但我不明白为什么当我尝试从 codeigniter 访问它时它总是为空。
  • 是否有任何关键的帖子数据中有一个点?
  • 不,就是这样 {"product":[{"id":"1","product_name":"apple","price":"11","discount_price":"1 "}]}
  • stackoverflow.com/questions/11442632/…。还要在codeignitor中检查这个文件system/libraries/Input.php
  • 您好,它仍然无法正常工作,但我会再做一些研究。无论如何,谢谢您的参考。

标签: javascript php codeigniter angularjs


【解决方案1】:

我知道这是旧的,但要摆脱您帖子中的 $$hashKey,请使用 angular.copy() 将其删除。所以:

data: $.param({
            "product" : angular.copy(products) 
        })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多