【问题标题】:How can I access my Javascript Variables in PHP?如何在 PHP 中访问我的 Javascript 变量?
【发布时间】:2016-02-24 10:50:10
【问题描述】:

我有一个名为lightstatuspage.php 的文件,其中包含HTML、JavaScript 和PHP 代码。我在代码的 JavaScript 部分中使用了一些变量,我试图通过将这些变量传递给代码的 PHP 部分来将它们发送到服务器。但是,这是行不通的。

我使用$.post("lightstatuspage.php", slider_val);,然后在PHP 部分,我通过$_GET['rangeslider_val']; 调用变量。

我做错了什么,我可以做些什么不同的事情来从 JavaScript 中获取变量并将其发送到服务器?

    function show_value(x)
    {
       document.getElementById("slider_value").innerHTML=x;

       event.preventDefault();
       var slider_val = x;
       var query = new Parse.Query(Post);
       query.first({
          success: function(objects){
            objects.set("slider_val", slider_val);
            objects.setACL(new Parse.ACL(Parse.User.current()));

            return objects.save();

            window.location.href = "lightstatuspage.php?rangeslider_val=" + slider_val;
          }
       })
    }

PHP代码是:

<?php
    $_GET['rangeslider_val'];

    print($rangeslider_val);
?>

【问题讨论】:

  • return 立即离开函数。返回后不会执行任何操作。此外,您不能从使用回调的函数返回任何内容。去掉return这个词就行了。
  • 返回部分用于将我的变量保存在 parse.com 中。如果我删除它,它不会保存。
  • 删除return - 保留objects.save();
  • 感谢您的帮助。这允许它继续存储值。
  • 我看到你正在使用 parse - 这意味着你应该能够从 php VIA parse 访问你的东西,而不是像我建议的那样通过 $.get 访问你的东西。我不知道解析框架,所以我无能为力。

标签: javascript php variables parse-platform server


【解决方案1】:

更改 JS 函数最后 2 行的顺序。在更改页面位置之前,您是 returning 函数。

【讨论】:

  • 我试过了,但不幸的是它没有改变任何东西。返回部分将函数返回到 parse.com 以将我的变量保存在那里,因此它不涉及更改页面的位置。但是我是否也应该为该部分包含一个返回函数?
  • 另外,如果.save 操作是异步的,您应该在浏览之前让它完成。查看它是否接受回调作为参数,返回Promise,或提供任何其他异步机制。目前,您的逻辑不支持您尝试实现的功能。
  • 有没有更好的方法将 slider_val 变量发送到 PHP 并在那里使用它?
  • 这完全取决于您需要实现的目标。例如,您可以将值传输到 PHP,最好使用 AJAX,这样您就不会离开当前页面。在 PHP 页面上,您可以更新 Parse 对象,并向原始页面返回成功/错误回复。
  • 感谢您的帮助。
【解决方案2】:

您忘记在打印时存储变量

<?php

     $rangeslider_val = $_GET['rangeslider_val'];
     print($rangeslider_val);

?>

【讨论】:

    【解决方案3】:

    您调用了 $_GET 但您没有将值分配给 PHP 中的变量 $rangeslider_val 并且您在调用 PHP 脚本之前在 JavaScript 中返回。你还提到你想使用来自 clentside 的 $.post 如果你这样做,你必须使用 PHP $_POST 从那里获取它。

    【讨论】:

    • 返回部分是将变量存储在parse.com中,与代码中的PHP部分无关。此外,不幸的是,即使在 PHP 中为变量赋值并使用 $_POST 之后,它也无法正常工作。
    【解决方案4】:

    首先添加 Jquery

    <script src='https://code.jquery.com/jquery-1.11.3.min.js'></script>
    

    在结束正文标记之前到页面末尾。 将 Javascript 变量发送到 PHP。最好的方法是使用 Ajax。并将以下代码添加到您的 javascript。 不要忘记下面的代码应该在一个事件上。例如点击按钮或类似的东西

    $( document ).ready(function() {
        var x = $('#input1').val();
        //or var x= 15;
        $.post("lightstatuspage.php",
        {
          'rangeslider_val': x
        },
        function(data, status){
        //alert("Data: " + data + "\nStatus: " + status);
       // you can show alert or not
        });
    });
    

    在php中,你可以使用:

    $value = $_POST['field1'];
    

    现在您的变量在 php 中的 $value 中。

    附注: 后端页面和 HTML 页面应该在同一个域中,否则您必须检查 Cross-Origin Resource Sharing


    第二个解决方案 因为用户在这里接受了这个解决方案,所以代码如下:

    $.get("lightstatuspage.php?rangeslider_val=" + slider_val,function(res) {
          console.log(res);
    });
    

    第二种方式只是POST和GET方式的区别


    第三种解决方案 如果你不想在你的项目中使用 Jquery 而你需要纯 JavaScript,你可以使用下面的代码

        var str = "Send me to PHP";
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                console.log(xmlhttp.responseText);
            }
        };
        xmlhttp.open("GET", "lightstatuspage.php?rangeslider_val=" + str, true);
        xmlhttp.send();
    

    【讨论】:

    • 请提及您正在将 jQuery 添加到他的代码依赖项中。
    • 我试过这个,但不幸的是它仍然无法正常工作。它的#input1 部分是从 HTML 调用变量吗?
    • #input1 是保存数据的输入。它也可以是 var x = 15
    • $.get("lightstatuspage.php?rangeslider_val=" + slider_val,function(res) { console.log(res);});
    • @Traveling Tech Guy 是的,我的代码中已经包含 jQuery,谢谢您的提醒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多