簡體   English   中英

Yii框架,將jquery參數傳遞到Yii :: app()-> createUrl('controller / action',array('param'=>'value')

[英]Yii framework, pass jquery parameters into Yii::app()->createUrl('controller/action',array('param'=>'value')

我是yii的新手,並且在我的一種觀點中有此腳本:

$('#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?

非常感謝你 :)

選項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,可能更干凈:在Yii中構建每個URL,將其作為data-attribute附加到鏈接,使用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屬性。

如果我正確理解了您的問題,則需要創建一個URL,以使用Javascript下載內容嗎?

這是不可能的。 JS在服務器端不起作用,因此一旦將其加載到客戶端(瀏覽器)中,就無法在JS函數內部使用PHP代碼創建URL。

但是,您可以在Yii中執行一個操作,即您傳遞一個值並回顯URL,然后使用Jquery(我認為是re​​sponseText)獲得該URL,並在需要時使用它。

如果在jQuery.ajax()使用data選項,也可以將文件名作為POST數據傳遞:

$('#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"); ?>",
        data: {fileName: fileName},
        success: function(jsonResponse) {


        },
        error: function() {

        }
    });

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM