[英]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(我認為是responseText)獲得該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.