【问题标题】:get value in php from js function从 js 函数获取 php 中的值
【发布时间】:2016-04-26 05:45:04
【问题描述】:

我很困惑如何从js获取数据到php变量。在JS函数中,我经常在事件中获取数据。问题是我想经常在php中获取数据,因为它是实时数据。payload每当数据到来时都包含数据。所以我必须不断获得payload的值。

<html>
<head>
<script src="jquery.min.js" type="text/javascript"></script>
<script src="mqttws31.js" type="text/javascript"></script>


    <script>
    function myFunction(p1, p2) {
    return p1 * p2;   
    };
     var mqtt,payload;
     var value = 10;
    var reconnectTimeout = 2000;
    function MQTTconnect() {
    if (typeof path == "undefined") {
        path = '/mqtt';
    }
    mqtt = new Paho.MQTT.Client(
            'broker',
            1883,
             "/mqtt",
            "a:" + "abcdef" + ":" + Date.now()
    );
        var options = {
            timeout: 3,
            useSSL: false,
            cleanSession: true,
            onSuccess: onConnect,
            onFailure: function (message) {
                $('#status').val("Connection failed: " + message.errorMessage + "Retrying");
                setTimeout(MQTTconnect, reconnectTimeout);
            }
        };

        mqtt.onConnectionLost = onConnectionLost;
        mqtt.onMessageArrived = onMessageArrived;


        options.userName = 'user';
        options.password = 'password';


        mqtt.connect(options);

    }

    function onConnect() {
        document.writeln("connected");

        // Connection succeeded; subscribe to our topic
        mqtt.subscribe('iot-2/type/+/id/+/evt/evt1/fmt', {qos: 0});
        //$('#topic').val('iot-2/type/" + "+" + "/id/" + "+" + "/evt/evt1/fmt');

    }

    function onConnectionLost(response) {
        setTimeout(MQTTconnect, reconnectTimeout);
        //$('#status').val("connection lost: " + responseObject.errorMessage + ". Reconnecting");

    };

    function onMessageArrived(message) {

        var topic = message.destinationName;
         payload = message.payloadString;  

        //document.writeln(payload);
        //document.write("\n"); 
        //$('#ws').prepend('<li>' + topic + ' = ' + payload + '</li>');

    };
    </script>


</head>
    <body>
        <?php
        $db = '<script type="text/javascript">document.write(MQTTconnect());</script>';
        $db1 = '<script type="text/javascript">document.write(payload);</script>';
        echo $db;
        echo $db1;      
        ?>
    </body>
</html>

【问题讨论】:

  • 我真的认为除了使用最有可能的 ajax 调用将值发送到服务器之外,没有其他可靠的方法。
  • @DavidPacker 你能建议在这种情况下如何使用 ajax..
  • 我现在没有时间,但你真的不应该将 DOM 操作与服务器端渲染混为一谈。如果在那之前没有人回答问题,我会稍后发布答案。

标签: javascript php html mqtt


【解决方案1】:

你可以做类似的事情

echo '<script type="text/javascript">'
   , 'document.write(MQTTconnect());'
   , '</script>'
;

【讨论】:

    【解决方案2】:

    在php中频繁获取数据的适用方式是在php元素发生变化时为其分配js数据。

    例如,当js函数执行时你可以写

    $("Element").val(output)// from js function 
    , $("element").html(output) or
    by document.getElementById(element) etc...`
    

    所以,任何改变都会相应地改变php元素的值

    【讨论】:

      猜你喜欢
      • 2022-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多