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 に答える