Yii框架,将jquery参数传递到Yii::app()->createUrl('controller/a
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,将其作为数据属性附加到链接上,使用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函数加载到客户端(浏览器)中,就不能在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() {
}
});
});
相关文章:
- 如何解决Yii中的页面刷新问题
- 如何在yii中使用append
- 如何制作Yii框架的linkHtmlOptions's的CGridView显示为图像图标,单击时会触发javas
- Yii ajaxbutton : 如何在成功回调函数中获取 $(this)
- 如何在yii中在同一行中给出onblur和onkeypress,这是可能的吗
- 未捕获的语法错误:意外的标记<在yii
- 显示基于下拉选择yii 2设置的字段
- 如何在 YII 框架中的 CJui自动完成中建议多个列
- Yii renderpartial Eselect2设计它'It’工作不正常
- 在<头部>来自Yii的控制器
- Yii ActiveForm:通过jQuery.load加载表单
- 如何在不刷新/更改页面的情况下刷新Yii小部件
- Yii-如何对按键上的数字进行文本字段验证
- Yii javascript在页面上
- Yii-如何获得下拉列表选项值与列表中的文本相同
- 使用AJAX将AJAX链接添加到页面Yii
- 可以't使用Javascript添加下拉列表yii
- Yii和Knockout在一起
- 在更改另一个字段时触发Yii字段验证
- Yii框架,将jquery参数传递到Yii::app()->createUrl('controller/a