[英]How do I get a php element into a javascript
我正在为论坛编写聊天脚本,似乎它使用php来获取用户的头像。 (PS idk关于天气的任何信息或非javascript都可以使用sql数据库或如何使用它,因此我想坚持使用php),但问题是,如果我将php变量放入其中,javascript就不喜欢它。
getUserNodeString: function(userID, userName, userRole) {
var encodedUserName, str;
if(this.userNodeString && userID === this.userID) {
return this.userNodeString;
} else {
encodedUserName = this.scriptLinkEncode(userName);
str = '<div id="'
+ this.getUserDocumentID(userID)
+ '"><a href="javascript:ajaxChat.toggleUserMenu(\''
+ this.getUserMenuDocumentID(userID)
+ '\', \''
+ encodedUserName
+ '\', '
+ userID
+ ');" class="'
+ this.getRoleClass(userRole)
+ '" title="'
+ this.lang['toggleUserMenu'].replace(/%s/, userName)
+ '">'
+ userName
+ '</a><?php echo \'<img src="test.php" />\' ?>'
+ '<ul class="userMenu" id="'
+ this.getUserMenuDocumentID(userID)
+ '"'
+ ((userID === this.userID) ?
'>'+this.getUserNodeStringItems(encodedUserName, userID, false) :
' style="display:none;">')
+ '</ul>'
+'</div>';
if(userID === this.userID) {
this.userNodeString = str;
}
return str;
}
},
'</a><?php echo \\'<img src="test.png" />\\' ?>'
是我试图使用的那行,我还没有放入变量,我用一个测试的immage对其进行了尝试第一 应该是这样的:
+ '</a><img src="<?php echo htmlentities($src, ENT_DISALLOWED | ENT_QUOTES | ENT_HTML5) ?>" />'
对于只需要包含PHP变量的代码的特定部分,您应该只返回PHP。 其余的应该是文字HTML或Javascript。
您还应该使用htmlspecialchars()
来确保变量内容经过正确编码以在HTML属性中使用,以防它包含特殊字符。
以上是将PHP变量转换为包含HTML代码的JS文字的方法。 如果只是想将PHP值放入Javascript变量中,则略有不同。 然后,您可以使用json_encode()
生成JS表示形式:
var js_var = <?php echo json_encode($php_var) ?>;
这是一个.js文件,取自ajax聊天
它无法在.js文件中运行,因为PHP无法解析这些文件。 可以对其进行设置以便对其进行解析,但是我强烈建议您永远不要这样做 。
此外,您不需要PHP即可完成工作。
原始答案
这行内的PHP不正确:
+ '</a><?php echo \'<img src="test.php" />\' ?>'
或者只是剥离PHP部分:
<?php echo \'<img src="test.php" />\' ?>
要使其正常工作,您需要删除那些转义的引号(您不必担心JS引号,因为PHP解析器将首先命中该文件,使您回显任何内容),并添加一个分号:
<?php echo '<img src="test.php" />'; ?>
整行应为:
+ '</a><?php echo '<img src="test.php" />'; ?>'
将呈现为:
+ '</a><img src="test.php" />'
为此,使用PHP确实没有意义,但是可以。
当然,它必须位于服务器将使用PHP解析的文件中(默认情况下为.php文件,强烈建议您不要为JS文件设置PHP解析)。 您永远不会在注释中回答有关文件类型的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.