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