在同一页面上将JS传递给PHP

时间:2018-02-06 12:31:48

标签: javascript php jquery ajax

我创建了简单的代码,应该在同一页面上将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']

你有什么建议我做错了吗?

1 个答案:

答案 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那边得到一些东西......

将此条件写入文件的开头

<?php
    if(isset($_POST['city'])) {
        die("...Return something to the call from jquery");
    }
?>

此代码后面应该跟您剩下的代码。

注意:如果您期望来自php的JSON数据,那么使用正确的标头并从php输出json字符串。使用die()不会解决问题。