如何在同一页面中将jQuery变量发布到PHP?

时间:2016-07-03 17:04:52

标签: javascript php jquery ajax

我的 jQuery 代码 PHP 代码在同一个PHP文件中 (不是两个单独的文件)。

我想将jQuery Variable发布到php代码。

但它在运行php文件时显示一些错误(“未定义的索引”)。

PHP文件如下(test.php)。

<?php 
    $country = $_POST['userCountry'];
    $ip = $_POST['userIp'];

    echo $country;
    echo $ip;
?>

<html>
<head><title></title>
    <script src = "jquery.min.js"></script>
    <script>
        $.getJSON("http://freegeoip.net/json/", function(data) {
            var country = data.country_name;
            var ip = data.ip;

            $.ajax({
                method:"POST",
                url:"test.php",
                data:{userCountry:country, userIp:ip}
            });
        });
    </script>
</head>
<body></body>
</html>

3 个答案:

答案 0 :(得分:5)

<?php 
if(!empty($_POST)){
    $country = $_POST['userCountry'];
    $ip = $_POST['userIp'];

    echo $country;
    echo $ip;
}
?>

<html>
<head><title></title>
    <script src = "jquery.min.js"></script>
    <script>
        $(document).ready(function(){
        $.getJSON("http://freegeoip.net/json/", function(data) {
            var country = data.country_name;
            var ip = data.ip;
            $.ajax({
                method:"POST",
                url:"test.php",
                data:{userCountry:country, userIp:ip},
                success:function(result){
                    $('body').html(result);
                }

            });
           });
        });
    </script>
</head>
<body></body>
</html>

试试这段代码。刚刚测试好了

答案 1 :(得分:0)

我不确定这是想要的结果......
但它看起来像。所以试试这个:

(适用EDITED)

<html>
<head><title></title>
    <script src = "https://code.jquery.com/jquery-1.12.0.min.js"></script>

</head>
<body>
<div id="result1"></div>
<br>
<div id="result2"></div>

<script>
$(document).ready(function(){
    var country;
    var ip;

    $.getJSON("http://freegeoip.net/json/", function(data) {
        country = data.country_name;
        ip = data.ip;
        console.log(country+" "+ip);

        $("#result1").append(country);
        $("#result2").html(ip);
    });
});
</script>

</body>
</html>

请注意,没有PHP或$ .ajax ...只有$ getJSON。

答案 2 :(得分:0)

那是因为PHP在服务器上编译而jQuery在客户端编译。你把它们放在同一个文件里。因此,当ajax运行时,PHP已经被编译,从而为您提供未定义的消息。为PHP部分创建一个单独的文件或使用isset(),并在提交数据后使用jQuery刷新页面。