![](/img/trans.png)
[英]Trying to access an external JavaScript function from within a PHP script
[英]Running a javascript function that is in an external .js file from within the script? (attached by src=) Using PHP
我正在使用PHP代码在网页的标签中生成标签。
我使用的是PHP,因此如果设置了特定的GET变量(在本例中为'savedsearch'),它将从我要附加到网页的外部javascript文件中运行功能。
这是我正在使用的代码:
<?php
//check if a saved search has been used
if (isset($_GET["savedsearch"])) {
$savedsearch=$_GET["savedsearch"];
echo "<script type='text/javascript' src='search.js'>
window.onload=sendsearch($savedsearch);
</script>";
}
else {
echo "<script type='text/javascript' src='search.js'></script>";
}
?>
这不起作用(如果设置了savesearch,则不运行该功能)...正在运行这样的功能吗?
还有什么其他方法可以在页面正文中没有任何javascript或PHP的情况下执行此操作?
感谢您的帮助,并在此先感谢。
如果您的脚本标签具有src属性,则该标签内的代码不会执行,则必须添加另一个标签来执行该代码,脚本标签不能用于获取脚本和运行内联脚本。
您还正在将sendsearch()
的结果分配给不是函数的window.load
。 这种工作方式唯一的原因是因为您真的不需要等待案例中的onload事件吗? 它是在解析脚本时调用的,而不是在window.onload事件之后。
另外,请确保在$savedsearch
上调用json_encode
,这将防止XSS和字符串转义问题(同时在字符串周围添加引号)。
<?php
//check if a saved search has been used
echo "<script type='text/javascript' src='search.js'></script>";
if (isset($_GET["savedsearch"])) {
$savedsearch=json_encode($_GET["savedsearch"]);
echo "<script type='text/javascript'>
// If you don't need to wait for the onload event
sendsearch($savedsearch);
// If you do need to wait for the onload event
window.onload = function(){
sendsearch($savedsearch);
};
</script>";
}
?>
你为什么不尝试:
<?php
//check if a saved search has been used
if (isset($_GET["savedsearch"])) {
$savedsearch=$_GET["savedsearch"];
echo "<script type='text/javascript' src='search.js'></script>
<script>
window.onload=sendsearch($savedsearch);
</script>
";
}
else {
echo "<script type='text/javascript' src='search.js'></script>";
}
?>
一次在script标记中同时包含src和content是不可靠的。
我不确定其他人的答案中概述的内容/源代码问题,但除非您的sendsearch
函数返回一个函数 ,否则它将无法正常工作。 您需要改为以下内容:
window.onload=function(){sendsearch($savedsearch)};
这提供了可以在onload
事件时运行的功能。
根据其他答案,这可能需要与将javascript拉入不同的标记结合使用-我不知道该如何工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.