1

私は yii が初めてで、ビューの 1 つに次のスクリプトがあります。

$('#div_exams').on('click', 'a[id^="download"]', function(e) {

    e.preventDefault();

    var fileName = e.target.id;

    $.ajax({
        type: "POST",
        url: "<?php echo Yii::app()->createUrl("exams/downloadExam",array('fileName'=>'HERE I NEED TO PASS FILENAME')); ?>",

        success: function(jsonResponse) {


        },
        error: function() {

        }
    });

});

私の質問は、javascript で var fileName を渡して yii で URL を作成するにはどうすればよいですか?

どうもありがとうございました :)

4

3 に答える 3

4

オプション 1: Yii で URL テンプレートを作成し、必要な各ファイル名を補間します。

var baseUrl = <?php echo json_encode(Yii::app()->createUrl("exams/downloadExam",array('fileName'=>'__PLACEHOLDER__'))); ?>; 

$('#div_exams').on('click', 'a[id^="download"]', function(e) {
  ...
  var url = baseUrl.replace('__PLACEHOLDER__', encodeURIComponent(filename));
  ...
}

オプション 2、おそらくよりクリーン: 各 URL を Yii で作成し、それをdata- 属性としてリンクに添付し、 JS を使用して読み取ります。

// when building each download link:

<?php echo CHtml::link('Download link, 'some url', array(
  'id' => 'download_1234',
  'data-download' => Yii::app()->createUrl("exams/downloadExam",array('fileName'=>'the file')),
));

// in the script

$('#div_exams').on('click', 'a[id^="download"]', function(e) {
  ...
  var url = $(this).data('download');
  ...
}

id現在行っているように、どちらのソリューションも属性を悪用しないことに注意してください。

于 2013-06-23T04:04:18.947 に答える