$(".btn-delete-news").click(function() {
if (!confirm('Are you sure to delete ?')) return false;
var idNews = $(this).attr('news-info');
console.log(idNews);
$.ajax({
url:"<?php echo Yii::app()->createUrl('/news/delete'); ?>",
data: { id : idNews },
type:"POST",
success: function(data){
if(data == "1") {
window.location = "/news/";
}
}
});
});
在脚本中,当我将该脚本插入查看文件时,它运行良好。
但我剪切它们,并将它们插入到js文件中,例如script.js =&gt;脚本运行错误,它不理解代码:url:"<?php echo Yii::app()->createUrl('/news/delete'); ?>"
,我必须将其更改为url:'/news/delete'
。
谁可以帮助我编写可以运行代码url:"<?php echo Yii::app()->createUrl('/news/delete'); ?>"
的js文件。
ps:Yii Framework在这里使用。
先谢谢。
答案 0 :(得分:2)
我认为一个很好的解决方案是将数据属性添加到.btn-delete-news并使用目标网址填充它,这样在JS中你可以读出它并将其用作目标网址:
<强> PHP:强>
<button class="btn-delete-news" data-target="<?php echo Yii::app()->createUrl('/news/delete'); ?>" />
JS(使用jQuery):
$(".btn-delete-news").click(function() {
if (!confirm('Are you sure to delete ?')) return false;
var idNews = $(this).attr('news-info');
console.log(idNews);
$.ajax({
url: $(this).data('target'),
data: { id : idNews },
type:"POST",
success: function(data){
if(data == "1") {
window.location = "/news/";
}
}
});
});
如果您想要
,您可以对目标位置执行相同的操作答案 1 :(得分:1)
这是因为.js文件不会被解析为PHP文件,除非您将服务器设置为这样做(不推荐)。
由于PHP只用于构建URL,因此可以通过在头文件/主PHP文件中创建JS变量来实现更自然的功能。该变量应包含您应用的基本网址:
var baseUrl = '<?php echo Yii::app()->createUrl(); ?>';
该变量随处可用,因为它在全球范围内。
URL参数的更改很简单,不再需要PHP:
...
$.ajax({
url: baseUrl + "/news/delete",
...
但是,既然你说你的应用只使用/news/delete
,你可能甚至不需要PHP / baseUrl部分......
如果您使用更复杂的URL重写(感谢@MrSoundless),这是另一个建议。
您可以在标题中定义所有这些复杂的网址,而不仅仅是baseUrl
,这样您就可以:
var deleteNewsUrl = '<?php echo Yii::app()->createUrl('/news/delete'); ?>';
在你的.js文件中,就是这样:
...
$.ajax({
url: deleteNewsUrl,
...