我创建了简单的代码,应该在同一页面上将JS
变量传递给PHP
。这是我到目前为止编写的代码:
<body>
<h3>Client side IP geolocation using <a href="http://ipinfo.io">ipinfo.io</a></h3>
<p><a onclick="" href="xyz.pdf" download id="xyz" value="x">test pdf</a></p>
<p><?php print_r($_SERVER['SERVER_NAME'] . '/' . $_SERVER['REQUEST_URI']); ?></p>
<p><?php
if(isset($_POST['city']))
{
$uid = $_POST['city'];
print_r("elo");
}
?></p>
</body>
<script>
$.get("http://ipinfo.io", function (response) {
if(response.city == 'Białystok') {
$("a").click(function() {
var city = response.city;
$.ajax({
type: "POST",
url: 'index.php',
data: { city : city },
success: function(data)
{
alert(city);
}
});
});
}
}, "jsonp");
</script>
所以你可以看到,我试图传递下载特定文件的用户的city
。当我在本地测试它后,点击download link
我从alert
得到success
,所以我想我正确地做到了。但我上面的PHP
没有打印任何东西。网站上没有$_POST['city']
。
你有什么建议我做错了吗?
答案 0 :(得分:0)
如果您只想在点击链接后打印城市名称,那么您就不需要php了。
<html>
<body>
<h3>Client side IP geolocation using <a href="http://ipinfo.io">ipinfo.io</a></h3>
<p><a onclick="" href="xyz.pdf" download id="xyz" value="x">test pdf</a></p>
<p><?php print_r($_SERVER['SERVER_NAME'] . '/' . $_SERVER['REQUEST_URI']); ?></p>
<p id="result">
<!-- Result will be printed here -->
</p>
</body>
<script src="http://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script>
$.get("http://ipinfo.io", function (response) {
$("a").click(function() {
var city = response.city;
$('p#result').html("City Name: "+city);
});
}, "jsonp");
</script>
</html>
将此条件写入文件的开头
<?php
if(isset($_POST['city'])) {
die("...Return something to the call from jquery");
}
?>
此代码后面应该跟您剩下的代码。
注意:如果您期望来自php的JSON数据,那么使用正确的标头并从php输出json字符串。使用die()不会解决问题。