您好我的HTML中有以下标记:
<script type="text/javascript" src="http://XX/teste1.php?BLABLABLA"></script>
在teste1.php中是否有一些内容,使用JS来检索参数BLABLABLA?如果我使用window.location.href,我会得到index.php的位置(当然),但是我需要使用JS而不是PHP来获取发送到外部资源的参数。
答案 0 :(得分:4)
我想我明白你的意思。看看以下小提琴。
您可以看到我在jQuery中手动加载,然后从脚本声明中获取src
。
===================
HTML 在脚本声明中添加id
<script id="jquerysrc" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js?key=test"></script>
<强>的Javascript 强>
$(document).ready(function() {
var scriptsource = "";
scriptsource = $("#jquerysrc").attr("src");
alert(scriptsource);
});
这将允许您查看外部js文件来自的URL。这是正确方向的重点。
答案 1 :(得分:1)
你可以尝试这个,而不使用jQuery。
var scripts = document.getElementsByTagName('script'),i,src;
for(i=0;i<scripts.length;i++){
src = scripts[i].src;
if (src && src.indexOf('?')>=0){
console.log(src.substring(src.indexOf('?')+1));
}
}
答案 2 :(得分:0)
似乎你不明白PHP和JS如何协同工作。 Php生成HTML(也许是JS和CSS)。然后,当客户端加载此html时,JS就会被执行。
要在PHP或JS中获取它,您可以使用正则表达式或修改从?BLABLABLA
到?key=BLABLABLA
的网址。在PHP中,“BLABLABLA”将存储在$ _GET ['key']
编辑:
我误解了你的问题。
来自“How to retrieve GET parameters from javascript?”:
使用window.location
对象。此代码为您提供没有问号的GET。
window.location.search.replace( "?", "" );
从您的示例中,它将返回BLABLABLA
EDIT2:
在teste.php中生成Javascript时,您应该这样做:
$str = "";
foreach ($_GET as $key => $value) {
$str = $key;
}
echo "var getParam = ".$str.";";
如果你不知道给出了什么,我看不出如何避免foreach。您可能必须重建参数字符串(“?xxx = sss&amp; ddd = zz ...”)
现在JS变量getParam应该包含BLABLABLA
阿波罗
答案 3 :(得分:0)
目前,JavaScript没有用于此目的的任何内置功能。您正在谈论的内容,即 BLABLABLA 被称为查询字符串。哪个被攻击到URL以创建动态网页(根据条件更改内容)
是获取整个URL,然后用空字符串替换URL,依此类推,只获取最后一个元素。
Another answer发布了一个函数(自定义函数,而不是builtIn函数)。在其中将参数传递给方法,该方法为您获取参数值。这也很容易理解。
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
要调用此功能,请使用getParameterByName('prodId')
。在函数或变量中使用它,你就可以了。