Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php yii ajaxLink未将变量传递给控制器_Php_Ajax_Yii - Fatal编程技术网

Php yii 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

我试图将一个变量从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 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'),