0

我正在尝试将 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();
    }
4

3 回答 3

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'),
于 2013-01-16T17:31:01.640 回答
0

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

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

        echo CHtml::ajaxLink(   
           'remove',                                    
            array('/storedInfo/remove', array('removeItem' => $id)), 
        );
    } 
于 2013-01-15T09:59:42.127 回答
-1

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

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

你需要在$text之前发送一些$url吗?

于 2013-01-14T19:47:25.693 回答