php没有显示来自AJAX的变量

Ian*_*ser 0 javascript php ajax jquery

我试图将一个变量从javascript发布到同一个php页面.这是代码:

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
    </head>
    <body>

    <?php echo 'Result is '; if (isset($_GET['testing'])) { echo $_GET['testing']; } ?>
    <?php $thisPage = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?>

    <script>
      $(document).ready(function() {
        $('#testing123').on('change',function () {
            var testing = "confirmed";
            $.ajax({  
                type: "GET",  
                url: "<?php echo $thisPage; ?>",  
                data: testing,
                success: function() { $('#showresult').html("success"); } 
            })
        });
      });
    </script>

    <form>
      <select id="testing123">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
      </select>
    </form>

    <div id="showresult"></div>

    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用POST,但不会在php中使用.还尝试使用单独的php文件并使用include_once()仍然无法正常工作.

我错过了要加载的文件吗?

jer*_*oen 7

问题是您发送的字符串不是键值对.你可以发送一个字符串(也就是屏幕后面发生的事情),但它必须是一个有效的查询字符串,由正确编码的键值对组成.

发送一个对象并让jQuery处理编码更容易:

    $('#testing123').on('change',function () {
        var testing = "confirmed";
        $.ajax({  
            type: "GET",  
            url: "<?php echo $thisPage; ?>",  
            data: testing,
            success: function() { $('#showresult').html("success"); } 
        })
    });
Run Code Online (Sandbox Code Playgroud)

会变成这样的:

    $('#testing123').on('change',function () {
        // send key - value pairs
        var testing = {'testing': "confirmed"};
        $.ajax({  
            type: "GET",  
            url: "<?php echo $thisPage; ?>",  
            data: testing,
            success: function() { $('#showresult').html("success"); } 
        })
    });
Run Code Online (Sandbox Code Playgroud)

编辑:要将PHP脚本的结果返回到页面上,您需要使用传递给success函数的变量:

...
success: function(output_from_php_script) {
            $('#showresult').text(output_from_php_script); 
         }
Run Code Online (Sandbox Code Playgroud)

另请注意,发布到在ajax调用中生成页面的原始页面不是很方便:它将返回您不需要的html(整个页面...).

你最好编写一个单独的脚本来处理你的ajax调用,然后只返回echo你需要的东西.