0

我想检索用户的位置,然后显示一个指向根据该位置更改的 URL 的链接。我只想将用户的城市名称放在 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/script%3E

我不知道该怎么做。我将非常感谢有关如何使其工作的任何信息,这对我的网站来说确实是一个重要的功能。请询问任何进一步的信息或 idk 任何东西。

这也是我测试该代码的地方:

http://chusmix.com/?page_id=1129

谢谢

4

4 回答 4

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>你显示的URL。

您正在通过彼此使用 Javascript 和 PHP。如果您想创建与城市的链接,请使用 javascript 创建(或修改)链接:找到链接(给它一个 ID 或在 DOM 中找到它)并分配 href,或使用 javascript 打印链接本身(而不是A):

<script language="javascript">
document.write('<a href="?s=' + geoip_city() + '">Search for your city</a>');
</script>
于 2010-12-25T22:35:40.813 回答
1

如果您检查页面的 HTML 代码,您可能会看到

<script language="javascript">document.write(geoip_city());</script>

浏览器将其解释为 JavaScript 代码,以正确显示您的城市。但是,浏览器不会在链接中更改它,因为它在引号内,导致浏览器按原样打印或使用字符串。

换句话说,JavaScript 代码不在链接中执行。

于 2010-12-25T22:35:28.427 回答
0

嘿 Liso,这是因为短代码被 WP 插件操作并作为 javascript 输出。因此,当您通过上述方法访问短代码时,实际分配的值就是这个 javascript。

于 2010-12-25T22:36:20.690 回答
0

您的问题是该位置不是来自 PHP。短代码所做的所有事情都是放在一些 javascript 中以获取位置然后打印出来。

<script language="javascript">document.write(geoip_city());</script>

您可以做的是使用基于 IP 地址的其他方法来查找位置。像这样的东西:http: //ipinfodb.com/ip_location_api.php

或者您可以编写一些 javascript 使用geoip_city()您的插件提供的功能并更改需要更改的 URL 的链接。如果需要更改的 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/

于 2010-12-25T22:41:06.580 回答