javascript - 使用 JQuery slider 运行服务器端 PHP

标签 javascript php jquery html ajax

完成 Codecademy 类(class)后,我一直在寻找一个新项目来进一步学习 PHP...但是,我已经陷入了死胡同,我认为这与其中的 AJAX 部分有关,但是无法弄清楚出了什么问题/在哪里以及如何出现问题。

代码:

<html>
    <head>
        <meta charset="utf-8">
        <script src="https://cdn.jsdelivr.net/jquery/1.11.3/jquery.min.js"></script>
        <link href="https://cdn.jsdelivr.net/jquery.roundslider/1.3/roundslider.min.css" rel="stylesheet" />
        <script src="https://cdn.jsdelivr.net/jquery.roundslider/1.3/roundslider.min.js"></script>
    </head>
    <body>
        <div id="slider"></div>
        <!-- I use the roundsliderui documentation for this: http://roundsliderui.com/ -->
        <script type="text/javascript">
            $("#slider").roundSlider({
                radius: 80,
                min: 0,
                max: 360,
                width: 9,
                startAngle: -90,
                handleSize: "+8",
                sliderType: "min-range",
                value: 180
          });

            $("#slider").on("drag", function (e) {
                var heading = e.value;
                $.post( "quicktest.php", {send: heading});
                console.log(heading);})
        </script>

        <?php
            function show(){
                $course= $_POST["send"];
                echo "Heading is: ".$course;
            } if (isset($_POST["send"])){
                show();}
        ?>
    </body>
</html>

我想做的是在名为 quicktest.php 的 php 页面上显示一个圆形 slider 。拖动 slider 时,页面应使用名为 show() 的 php 函数进行更新。为此,我使用 echo 语句。

发生的情况如下:

  • 发布工作:在 Chrome 的开发者控制台中,我看到正确的值被发送到 localhost 并看到状态为 200
  • 当我查看开发者控制台 > 网络 > 预览时:我看到页面已正确更新。
  • 但是,我的浏览器中的页面保持不变。

所有这些让我觉得我在 AJAX 上做错了什么;但就像我说的,我无法查明错误。

最佳答案

这是因为您不能以这种方式使用 PHP。 PHP 在到达浏览器之前先在服务器上进行评估。

执行此类操作的方法是使用 javascript。一种方法是使用 jQuery 的 after() :

$("#slider").on("drag", function (e) {
    var heading = e.value;

    $('#slider').after("<p>Heading course is: " + heading + "</p>")

    $.post("quicktest.php", {send: heading});
    console.log(heading);
})

或者,如果您不希望在 ajax 请求完成之前显示消息,您可以这样做:

$("#slider").on("drag", function (e) {
    var heading = e.value;

    $.post("quicktest.php", {send: heading}, function () {
        $('slider').after("<p>Heading course is: " + heading + "</p>")
    });
})

希望这有帮助!

关于javascript - 使用 JQuery slider 运行服务器端 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45299786/

相关文章:

javascript - or 运算符在这段 JavaScript 中做了什么?

php - 在php中格式化日期

php - 如何在php中真正包含html代码

javascript - AngularJS 使用 resolve 验证多条路由

jquery - 为什么某些 jQuery UI 操作对无实体的 DOM 元素不成功?

jquery chrome Runtime.onMessage 事件处理程序中出现错误 : TypeError: Cannot read property 'length' of null

javascript - 屏幕调整大小时边距动画中断的图像 slider (未使用 slider 插件)

javascript - JavaScript 正则表达式出现错误

javascript - 如何将javascript变量传递给模态

jquery - 如何在 JQuery Spinner 中添加后缀文本