【问题标题】:How to POST jQuery variables to PHP in same page?如何在同一页面中将 jQuery 变量发布到 PHP?
【发布时间】:2016-07-03 17:04:51
【问题描述】:

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

我想将 jQuery 变量发布到 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>

【问题讨论】:

  • @icecub,getJSON 的第一个参数是上面示例中传递的 URL。
  • 你的页面地址和getJSON传入的地址不同..

标签: javascript php jquery html ajax


【解决方案1】:
<?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>

试试这个代码。刚刚测试OK

【讨论】:

    【解决方案2】:

    这是因为 PHP 在服务器上编译,而 jQuery 在客户端编译。您将两者保存在同一个文件中。因此,当 ajax 运行时,PHP 已经被编译,从而给你消息 undefined 。为 PHP 部分创建一个单独的文件或使用isset() 并在提交数据后使用 jQuery 刷新页面。

    【讨论】:

    • 感谢您的快速回复。您的建议将对以后的实施有所帮助。
    【解决方案3】:

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

    (已编辑)

    <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。

    【讨论】:

    • 感谢您的快速回复。但是 php 必须在那里才能进一步实现。不过这在以后会有用..
    • 好的...有了这个,您可以“玩”一下结果、组织、格式等...然后将其发送到 PHP 页面。顺便说一句,感谢您让我发现此链接(freegeoip)有用。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多