如何从控制器angularjs向codeigniter控制器发送数组?

时间:2014-01-21 14:24:17

标签: javascript php codeigniter angularjs

您好我是角度js和codeigniter的新手。

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

有我的代码。

angular(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。

1 个答案:

答案 0 :(得分:3)

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

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