1

PHP url パラメータに Javascript 変数の値を指定することは可能ですか? 次のコードを見て、これを行う方法を提案してください。HTML コード:

foreach($rd as $data){
            echo "<tr><td>".$data[role_name]."</td><td>".$data[role_description]."</td><td><a href=".$this->action('edit', $data['role_id']).">Edit</a></td><td>".$ih->button_js(t('Delete'), "deleteRole('".$data['role_id']."')", 'left', 'error')."</td></tr>";
        }

このコードでは、JS 関数 deleteRole?(): script: を呼び出します。

function deleteRole(myvar) {
    if (confirm('<?php echo $delConfirmJS ?>')) {
       location.href = "<?php echo $this->url('/role/add_role/', 'delete', 'myvar')?>";
    }
}

私のコントローラーページでは、値ではなく文字列として myvar を受け取りますか? controller.php

public function delete($id){
    echo $id;
    exit;
    $delete = roleinfo::delete($id);
    $this->redirect('/role/add_role'); }

この echo print "myvar" だけが値ではありませんか? その書き込み方法を教えてください。他にこれを行う方法は?

ありがとうクマール

4

3 に答える 3

4

JS はクライアント側の言語であり、PHP はサーバー側の言語であるため、JS 変数を PHP 関数または変数に直接送信または割り当てることはできません。

JS 変数を送信する場合、1 つの方法は、サーバーに ajax リクエストを送信すると、変数が php で使用可能になり、使用できるようになります。

サンプルの ajax 形式は次のとおりです。

$.ajax({
    cache: false,
    url: base_path + '{file_name_where_you_want_to_receive_that_value}',
    type: 'post',
    data: {
        myvar: myvar
    },
    success: function(data) {
        // when you provided url procedd the req. then success will call.

    }
})

[file_name_where_you_want_to_receive_that_value] で、その値を変数に代入して使用します。

于 2013-11-12T08:01:17.543 に答える
1

フォームまたはsmthgはありますか?最も簡単な方法は、JS を介して値を変更し、POST を使用して PHP に送信する隠しフィールドを使用することだと思います。これはクリーンまたはプロフェッショナルな方法ではありませんが、実装が簡単で、その役割を果たします。

于 2013-11-12T07:45:58.157 に答える
1

作成できる最も単純な AJAX リクエストは次のとおりです (簡単にするために jQuery を使用します。jQuery を使用せずに AJAX リクエストを実行する方法を検索できます)。

function deleteRole(myvar) {
    $.ajax({
        url: "<?php echo $this->url('/role/add_role/', 'delete', 'myvar')?>",
    }).done(function(data) {
        console.log(data);
        $( this ).addClass( "done" );
    });
}

これにより、指定された URL への新しいリクエストが作成され、基本的にコントローラー アクションが実行されます。JavaScript変数データにリクエスト応答があります。

詳細はこちら

于 2013-11-12T09:12:09.177 に答える