$(".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 => script运行错误,它不理解代码:url:"<?php echo Yii::app()->createUrl('/news/delete'); ?>"
,我必须将其更改为url:'/news/delete'
。谁能帮我把js文件中可以运行的代码url:"<?php echo Yii::app()->createUrl('/news/delete'); ?>"
.
ps: Yii框架在这里使用。
我认为一个很好的解决方案是为。btn-delete-news添加一个data属性并填充目标url,以便在JS中您可以读取它并将其用作目标url:
PHP:<button class="btn-delete-news" data-target="<?php echo Yii::app()->createUrl('/news/delete'); ?>" />
JS (with 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/";
}
}
});
});
如果你想
这是因为.js文件不会被解析为PHP文件,除非您设置服务器这样做(不推荐)。
因为PHP只用于构建URL,你可以通过在你的头/主PHP文件中创建一个JS变量来实现更自然的东西。这个变量应该包含你的应用的基础URL:
var baseUrl = '<?php echo Yii::app()->createUrl(); ?>';
该变量将在任何地方可用,因为它在全局作用域中。
URL参数的改变很简单,它不再需要PHP:
...
$.ajax({
url: baseUrl + "/news/delete",
...
然而,因为你说你的应用程序只与/news/delete
工作,你可能甚至不需要PHP/baseUrl部分…
这里是另一个建议,如果你使用更复杂的URL重写(感谢@MrSoundless)。
你可以在标题中定义所有这些复杂的url,而不仅仅是baseUrl
,所以你可以有:
var deleteNewsUrl = '<?php echo Yii::app()->createUrl('/news/delete'); ?>';
在你的。js文件中,只需要这样:
...
$.ajax({
url: deleteNewsUrl,
...