将数据Javascript传输到PHP(点击确认框)



我希望当用户单击"Ok"时,我在服务器上的文件(.txt)中写入一个字符串。

 <script> if(confirm('capteur') == true){ /*write on a file*/ } </script>

我以为我可以简单地编写JavaScript来做到这一点,但它不是那样工作的。所以,我想将数据从JavaScript传输到PHP,这指示PHP是否必须写入(或不写入)文件。

 <script> if(confirm('capteur') == true){ /*send data to PHP*/ } </script>
 <?php $var = //data send from Javascript
   if($var==1){
       $fichier = fopen("log.txt",'a');
       $puts($fichier,"restart");
       fclose($fichier);
   }
 ?>

我尝试了一些解决方案(Ajax,重定向,POST/GET,jquery),但我从未设法传输数据。

这是我使用 jquery 的测试:

<script> if(confirm('capteur') == true){ 
               var variableToSend = 1;
               $.post('jv.php', {variable: variableToSend});
         } </script>
<?php $var = $_POST['variable']; ?>

在这里与 获取/发布 :

<script>if(confirm('capteur') == true){
           var xhr_object = null;
           if(window.XMLHttpRequest){
               xhr_object = new XMLHttpRequest();
           }else{
               alert("Your browser doesn't support the XMLHTTPRequest object");
           }
            xhr_object.open("POST", "jv.php", true);
            xhr_object.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xhr_object.send("variable=1");
            /*xhr_object.open("GET","jv.php?variable=1",true); xhr_object.send();*/
        }
</script>

最好/最简单的选择是什么?

  1. 您应该尽量避免使用: confirm("capteur") == true因为该表达式完全等效于 confirm("capteur")

  2. 使用 jquery 尝试以下操作:

    var variableToSend = 1;
    $.post("someFile.php", {variable: variableToSend});
    

    someFile.php

    <?php
        if(isset($_POST["variable"]))
        {
            $var = $_POST["variable"];
            //do stuff with $var here
        }
    ?>
    

另外,我认为你对PHP的工作原理有一个根本性的误解。PHP 所做的所有处理都发生在您看到结果页面之前。如果您使用 ajax 将数据发送到 PHP 页面,除非您对页面结果执行某些操作并适当地更新当前页面,否则当前页面上的任何内容都不会更新。

尝试一下以更好地理解:

<html>
    <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js">
        <script type="text/javascript">
            if(confirm("click ok!"))
            {
                 $.post("myphpfile.php", {data: "ok"})
                       .done(function(data)
                            {
                                alert(data);
                            });
            }
        </script>
    </head>
    <body>
    </body>
</html>

在myphpfile中.php

<?php
    if(isset($_POST["data"]))
    {
        print "your message: " . $_POST["data"];
    }
?>

在我看来,最好的方法是Ajax方法。

<script type="text/javascript">
    if(confirm('capteur') == true) { 
        var variableToSend = 1;
        jQuery.ajax({
          url: "jv.php",
          type: 'POST',
          cache: false,
          data: {variable: variableToSend}
        });
    }
</script>

文件的内容 jv.php 应该是这样的

<?php
if (isset($_POST['variable'])) {
    file_put_contents('log.txt', $_POST['variable'], FILE_APPEND);
}

最新更新