我想注释一个代码块,但我的javascript块中有一行同时包含jquery和php
像这个
jq('.time_slot').each(function(index) {
var a = jq(this).autocomplete({
serviceUrl:"<? echo $this->config->item('base_url'); ?>business/information/add/autocomplete",
params: { suggessions_id:28767 }, //aditional parameters
onSelect:function(value,data){ jq(this).trigger('change'); }
});
});
没有这条线
serviceUrl:"<? echo $this->config->item('base_url'); ?>business/information/add/autocomplete",
我可以用评论这个区块
/*
*/
但现在我不能使用它,我也尝试过单行注释,比如这个
//jq('.time_slot').each(function(index) {
//var a = jq(this).autocomplete({
//serviceUrl:"<? echo $this->config->item('base_url'); ?>business/information/add/autocomplete",
// params: { suggessions_id:28767 }, //aditional parameters
// onSelect:function(value,data){ jq(this).trigger('change'); }
// });
// });
但是对于这条线路
serviceUrl:"<? echo $this->config->item('base_url'); ?>business/information/add/autocomplete",
它不起作用。
所以我最终得到了一个非常糟糕的解决方案,比如这个
//serviceUrl:"
<? //echo $this->config->item('base_url'); ?>
//business/information/add/autocomplete",
评论我的代码块的最佳方式是什么,提前谢谢。
在运行时,如果启用了php配置的short_open_tag,则在将html(包含带注释的上述javascript)发送到浏览器之前,服务器中的php解析器会解析<? ?>
中包含的脚本。
因此,如果您使用//注释掉这一行,从技术上讲应该是可行的,因为javascript解析器不会意识到字符串是从php生成的。
请确保已启用short_open_tag,或者使用<?php
而不是短标记(<?)
。
好的,无可否认,这并不漂亮,但如果你想一下子取消混合的PHP和JavaScript,你可以考虑用总是返回false的PHP条件包装整个块,例如:
<?php if (1 == 0) { ?>
jq('.time_slot').each(function(index) {
var a = jq(this).autocomplete({
serviceUrl:"<? echo $this->config->item('base_url'); ?>business/information/add/autocomplete",
params: { suggessions_id:28767 }, //aditional parameters
onSelect:function(value,data){ jq(this).trigger('change'); }
});
});
<?php } ?>
我知道,这很丑陋,但不可否认,对于大块的混合代码来说,它快速有效。
您提供的解决方案再好不过了。PHP和JS注释总是分开的,您可以将JS注释放入PHP的echo函数中。
PHP解析器总是尝试在块之间运行代码。
Imho最好的解决方案是使用/*和*/注释整个JS代码,并使用单行注释来防止PHP运行PHP代码块。
这已经是最好的方法了。想不出更好的办法了。。