我想检索用户的位置,然后显示指向根据该位置更改的网址的链接。我只想将用户的城市名称放在HREF的末尾。
我需要在我的wordpress网站上,在静态页面上进行这项工作。我使用一个名为Exec-php的插件,让我在页面中运行PHP。
我有一个插件,通过短代码“[mmjs-city]”为我提供用户的城市。
我试图让它通过不同的路径工作,但我从来没有得到链接工作。
在这里,我尝试将该短代码分配给一个值,
<?php
$city= "[mmjs-city]";
echo $city;
echo "<a href='?s=" . $city ."'>Search for your city</a>";
?>
我添加了前两行以检查短代码是否正常工作,以及它是否正确地为$ city值。那部分有效。然后它创建链接并在其末尾放置值$ city。但在尝试而不是带我去:
/?S =新+纽约
我需要:
/ S =%3Cscript%20language =%22javascript%22%3Edocument.write(geoip_city());?%3C /脚本%3E
我不知道该怎么做。我会非常感谢有关如何使其工作的任何信息,这对我的网站来说真的是一个重要的功能。请询问任何进一步的信息或idk任何东西。
这也是我测试该代码的地方:
http://chusmix.com/?page_id=1129
由于
答案 0 :(得分:3)
问题是$ city实际上输出了一段javascript。然后浏览器执行该功能,并将用户的城市写入屏幕。
<script language="javascript">document.write(geoip_city());</script><br/><br/><a href='?s='>Search for your city</a>
如果您在href中使用此功能,则会直接链接到<script language="javascript">document.write(geoip_city());</script>
,这会导致您显示的网址。
您正在通过彼此使用Javascript和PHP。如果你想创建一个与城市的链接,创建链接(或修改)javascript:找到链接(给它一个ID或在DOM中找到它)并分配href,或使用javascript打印链接本身(而不是A):
<script language="javascript">
document.write('<a href="?s=' + geoip_city() + '">Search for your city</a>');
</script>
答案 1 :(得分:1)
如果您检查页面的HTML代码,您可能会看到
<script language="javascript">document.write(geoip_city());</script>
由浏览器解释为JavaScript代码,以正确显示您的城市。但是,浏览器不会在链接中更改它,因为它在引号内引起浏览器打印或按原样使用字符串。
换句话说,JavaScript代码不会在链接中执行。
答案 2 :(得分:0)
嘿Liso, 这是因为短代码被WP插件操纵并作为javascript输出。因此,当您通过上述方法访问短代码时,分配的实际值是此javascript。
答案 3 :(得分:0)
您的问题是该位置不是来自PHP。所有的短代码都放在一些javascript中去获取位置然后打印出来。
<script language="javascript">document.write(geoip_city());</script>
您可以使用其他一些基于IP地址查找位置的方法。这样的事情:http://ipinfodb.com/ip_location_api.php
或者您可以编写一些使用插件提供的geoip_city()
函数的javascript,并更改需要更改的网址的链接。如果需要更改的URL位于类location_link
的链接中(并且您使用的是jQuery),则可以执行以下操作:
$('.location_link').each(function(i,v) {
$(v).attr('href', $(v).attr('href') + geoip_city());
});
此链接最初必须只有?s=
才能生效。在加载所有页面元素之后,需要完成此代码 - 您可以使用jQuery的ready
函数:http://api.jquery.com/ready/