Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Javascript字符串传递给PHP_Php_Javascript - Fatal编程技术网

将Javascript字符串传递给PHP

将Javascript字符串传递给PHP,php,javascript,Php,Javascript,我想把一个javascript字符串传递给php。。。就在代码后面。。在剧本里 <script type="text/javascript"> var myvar = "mytext" ; <?php echo myvar ; ?> </script> var myvar=“mytext”; 这是行不通的。 我该怎么办?PHP在服务器端执行,而javascript在客户端执行,这意味着在发送javascript代码时PHP已经执行 您可能想转而研

我想把一个javascript字符串传递给php。。。就在代码后面。。在剧本里

<script type="text/javascript">
  var myvar = "mytext" ;

 <?php echo myvar ; ?>
</script>

var myvar=“mytext”;
这是行不通的。
我该怎么办?

PHP在服务器端执行,而javascript在客户端执行,这意味着在发送javascript代码时PHP已经执行


您可能想转而研究AJAX。

您应该弄清楚客户端代码和服务器端代码之间的区别。您在php代码中引入的变量以前没有赋值,因为该变量是在客户端设置的。因此,您的代码示例本质上是错误的。如果希望客户端(javascript)上的值在服务器(php)上可用,则需要使用javascript的xmlhttprequest对象(也称为ajax)

不过,您可以用另一种方法…用javascript打印php值。这是因为脚本是在服务器端创建的,并在浏览器处理之前发送到客户端


不确定你想达到什么目的,但这可能有点帮助。

当有人访问网站时,通常会发生以下情况:

  • 他们的浏览器向服务器发送请求
  • 服务器评估该请求
  • 服务器意识到,“Egad,他们请求的页面有PHP!”
  • 服务器评估PHP,并仅将结果发送到浏览器
  • 浏览器解析它接收的内容
  • 浏览器意识到,“Egad,我收到的页面有JavaScript!”
  • 浏览器完全在客户机上评估JavaScript
  • 因此,PHP和JavaScript基本上处于流程的不同阶段。只有服务器处理PHP,只有客户端处理JavaScript

    要“给”PHP一个字符串,您必须向PHP页面发出请求,并将该字符串作为GET变量发送:

    http://www.yourdomain.com/some_php_page.php?myvar=mytext
    
    使用JavaScript有几种方法可以做到这一点

  • 如果您只关心在PHP页面上发出该请求,而不必担心收到任何信息,您只需创建一个图像并使用URL作为源:

    var fakeImg = new Image();
    fakeImg.src = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext';
    
    即使您正在请求一个图像,服务器也不知道这一点,并将通过调用PHP对其进行评估等方式处理您的请求

  • 您可以发出实际的AJAX请求。首先创建一个XMLHttpRequest对象:

    var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
    
    IE中存在一些关于AJAX请求的缓存响应的问题,因此请使url唯一:

    var url = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext&unique=whatever';
    
    告诉您的XHR您希望它去哪里,以及您希望它如何到达那里:

    xhr.open('GET', url, true);
    // The "true" parameter tells it that we want this to be asynchronous
    
    设置在收到响应时检查的方法:

    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4 && xhr.status < 400) {
            success(xhr.responseText);
        }
    };
    
    要记住的一些注意事项:

    • 您必须自己构建
      success
      函数,以处理PHP页面将返回的字符串
    • 如果需要,可以传递该函数
      xhr.responseXML
      ,但这对我来说通常只是个麻烦
    • 用我的方法使用
      onreadystatechange
      会(我相信)在IE的某些版本中引入内存泄漏

  • 你的例子有点令人困惑:

    <script type="text/javascript">
      var myvar = "mytext" ;
    
     <?php echo myvar ; ?>
    </script>
    
    
    var myvar=“mytext”;
    
    因为如果我这样做:

    <script type="text/javascript">
      <?php $myvar = "mytext"; ?>
      var myvar = "<?php echo $myvar; ?>" ;
    </script>
    
    
    var myvar=“”;
    

    然后,它将
    myvar
    的JavaScript值设置为
    $myvar
    的PHP值,使两者保持不变。如果你想做其他事情,你需要扩展你的例子。

    好吧。。。我想在没有ajax的情况下完成它。。。但是如何使用ajax呢?代码示例?@mr.bio不可能在PHP中使用JavaScript值(在同一页面上),因为PHP已经执行。您需要发出另一个HTTP请求,显然您不了解PHP和JavaScript、服务器端和客户端之间的区别。我建议你在编写任何其他代码之前仔细阅读一下。。
    <script type="text/javascript">
      <?php $myvar = "mytext"; ?>
      var myvar = "<?php echo $myvar; ?>" ;
    </script>