yii ajaxLink没有将变量传递给控制器

时间:2013-01-14 19:40:34

标签: php ajax yii

我正在尝试将ajaxLink中的变量传递给我的控制器,但我的控制器没有得到变量。

//查看

$ids = Yii::app()->storedData->getIds();
    foreach($ids as $id) {
    echo 'ID '.$id .'<br />';

    echo CHtml::ajaxLink(   
     'remove',                                    
     array('/storedInfo/remove'), 
     array(
      'data' => array('removeItem' => $id),
    ));
    } 

//控制器

public function actionRemove() {
        var_dump($_GET['removeItem']);  // RETURNS string(0) ""
        die();
    }

3 个答案:

答案 0 :(得分:2)

您传递给CHtml::ajaxLink的ajax数组最终会占用整个数组并将其传递给CJavaScript::encode()

正如您在评论中提到的,您用于构建数据数组的$id是一个PHP对象。当得到CJavaScript :: encode时,事情变得不稳定,结果并不像你期望的那样。从$ id中提取字符串或数值,而不是传递整个对象,应该注意这一点,例如:

  'data' => array('removeItem' => $id->value) // obviously you'll need to use the proper key to get the value

或者类似的东西取决于数据结构:

  'data' => array('removeItem' => settype($id, 'string'),

答案 1 :(得分:0)

我编辑了我的答案,因为我承认这不是原始提问者想要的,但为了评论,我将代码留在这里

    $ids = Yii::app()->storedData->getIds();
    foreach($ids as $id) {
        echo 'ID '.$id .'<br />';

        echo CHtml::ajaxLink(   
           'remove',                                    
            array('/storedInfo/remove', array('removeItem' => $id)), 
        );
    } 

答案 2 :(得分:-1)

看起来CHtml::ajaxLink需要的参数多于您发送的参数。

public static string ajaxLink(string $text, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( ))

您是否需要在$text之前发送一些$url