Php yii ajaxLink未将变量传递给控制器
我试图将一个变量从ajaxLink传递到我的控制器,但我的控制器没有获取该变量 //看法Php yii ajaxLink未将变量传递给控制器,php,ajax,yii,Php,Ajax,Yii,我试图将一个变量从ajaxLink传递到我的控制器,但我的控制器没有获取该变量 //看法 $ids = Yii::app()->storedData->getIds(); foreach($ids as $id) { echo 'ID '.$id .'<br />'; echo CHtml::ajaxLink( 'remove', array('/s
$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 static string ajaxLink(string $text, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( ))
你需要在
$url
之前发送一些$text
吗?我编辑了我的答案,因为我承认这不是原始提问者想要的,但为了评论,我把我的代码留在这里
$ids = Yii::app()->storedData->getIds();
foreach($ids as $id) {
echo 'ID '.$id .'<br />';
echo CHtml::ajaxLink(
'remove',
array('/storedInfo/remove', array('removeItem' => $id)),
);
}
$ids=Yii::app()->storedData->getIds();
foreach($id作为$id){
回显“ID”。$ID.
;
echo-CHtml::ajaxLink(
“删除”,
数组('/storedInfo/remove',数组('removietem'=>$id)),
);
}
您要传递给的ajax数组最终会获取整个数组并将其传递给
正如您在评论中提到的,用于构建数据数组的$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'),
你说得对,在发布我的代码时,我忽略了这一点,但现在编辑了它。无论如何,这不是问题。这不是问题,查看源代码时,
CHtml::ajaxLink
中的最后两个参数是可选的,生成的javascript代码显示什么?$id
的值是否如预期的那样存在?$\u GET中是否有任何数据?请同时检查accessRules。@ernie感谢您的提醒…在试图捕获变量时,view source中没有显示任何内容。但是如果我使用数组('removietem'=>'100')
,那么是的,我看到100,一切都正常。我甚至尝试过变量引用,但这并没有改变任何事情。然而,我可以只回显$id并在该页面上获取我需要的内容,但我确实需要像我正在尝试的那样,通过链接将其发送回控制器。我假设当您输出id和$id
时,这是否按预期工作?$id
的数据类型是什么?当通过生成AJAX时,您可能会遇到问题。也许$id是某种类型的对象,所以不获取字符串表示形式吗?或者您可能遇到最后一个else条件,并得到一个空字符串(“”)。如果$id有一个uu-tosString方法,那么echo语句可以工作,但是将它传递给javascript编码可能会失败。那么,var\u dump$id
show是什么呢?基本上,您不需要传递对象,而是希望使用int或string值。您看到我在哪里传递了第三个选项?第二个数组在第一个数组中,因此它将是createUrl的参数,而不是$ajaxOptions的参数,我不知道如何解释您读取代码,但实际上CHtml::ajaxLink调用只有两个参数,你听说过多维数组吗?@ernie:第二个参数构建url,文档中明确指出:如果输入参数是数组,它将被视为控制器路由和GET参数列表,将调用CController::createUrl方法来创建url。在本例中,第一个数组元素引用控制器路由,其余键值对引用URL的附加GET参数。例如,可以使用数组('post/list','page'=>3)来生成URL/index.php?r=post/list&page=3。啊,我错过了没有结束语的机会。很抱歉。
'data' => array('removeItem' => settype($id, 'string'),