JavaScript何时何地运行,PHP如何?我能把两者结合起来吗?

JavaScript何时何地运行,PHP如何?我能把两者结合起来吗?,javascript,php,Javascript,Php,像JavaScript这样的客户端语言何时运行,像PHP这样的服务器端语言何时运行?我怎样才能把两者混在一起 我想在点击我网站上的按钮时运行PHP函数,或者从PHP运行JavaScript函数;有可能吗?简短的回答是没有。不能从JavaScript运行PHP函数[AJAX除外],也不能从PHP运行JavaScript函数。这两个运行时是分开的 怎么用? 要了解JavaScript和PHP是如何合作的,您应该首先了解驱动web的HTTP协议的基础知识 上图演示了HTTP协议的基础知识。用户(您)

像JavaScript这样的客户端语言何时运行,像PHP这样的服务器端语言何时运行?我怎样才能把两者混在一起


我想在点击我网站上的按钮时运行PHP函数,或者从PHP运行JavaScript函数;有可能吗?

简短的回答是没有。不能从JavaScript运行PHP函数[AJAX除外],也不能从PHP运行JavaScript函数。这两个运行时是分开的

怎么用? 要了解JavaScript和PHP是如何合作的,您应该首先了解驱动web的HTTP协议的基础知识

上图演示了HTTP协议的基础知识。用户(您)要求客户端(您的浏览器)为您获取页面。然后,浏览器将向服务器(本例中为谷歌)请求页面。服务器将回复一个HTML页面,客户端解析该页面,并请求正确加载页面所需的图像、字体和任何其他资源。然后,客户端将完成的页面呈现给用户

那么JavaScript从何而来? JavaScript在客户端(即浏览器)中运行。因此,JavaScript在服务器响应到达后运行。让我们将其添加到图表中

JavaScript脚本一加载就开始运行,如果事件监听器等待用户的事件(如单击、键入或移动),JavaScript脚本将继续运行

PHP在哪里适合? PHP在服务器上运行,web服务器(负责提供web内容的程序)将根据其配置运行PHP。PHP将处理来自web服务器的输入,并返回输出。该输出返回给客户机

更新的图表:

如您所见,PHP执行不会持久。它被执行,然后在发送响应后结束


如您所见,PHP执行和JavaScript执行之间没有重叠,因此实际上不可能使其中一个上的函数基于另一个的输入工作

但是但是我听说过阿贾克斯! AJAX只是从JavaScript发出另一个HTTP请求。您可以将其称为从JavaScript使用PHP函数的一种方式,但实际上并非如此

如您所见,使用AJAX,JavaScript将向服务器发送一个请求,服务器将调用PHP,PHP将再次运行,就像在普通请求中一样(PHP不一定知道这是一个AJAX请求!),服务器将响应返回给JavaScript,JavaScript使用它来完成任务

在本例中,PHP运行时间和JavaScript运行时间之间存在重叠,因为JavaScript调用了一个请求

另见:

    • 另一个答案很好,但我将尝试一种更简单的方法

      浏览器从服务器接收HTML和JavaScript页面。PHP正在服务器上组装发送到浏览器的最终页面。它可以检查一些数据库,做一些计算,也许还可以连接一个API,但最后它会获取所有信息并“打印”在一个充满代码的页面上,然后发送到浏览器

      浏览器获取页面,如果页面上有任何Javascript,或者如果有脚本标记拉入其他.js文件,它将读取所有内容,然后执行Javascript

      因此,您的页面是由PHP“构建”的,它可以在浏览器执行的页面中包含Javascript,但这两个过程通常是分开的

      通过在页面上输出特定的JS代码,可以让PHP与Javascript“对话”

      通过在页面执行时使用AJAX联系服务器,可以让Javascript与PHP“对话”。服务器可以返回应答信息,然后再次使用Javascript将其集成到页面中

      但总的来说,这两个进程在各自的世界中运行

      您可以用AJAX最好地实现“按钮启动PHP代码”


      从“内部”PHP运行Javascript并没有真正完成。

      欢迎来到McBurger,一家高档(没错)汉堡店。咖啡的味道变干了 油脂会侵入你的鼻孔,导致你的肠子里混入一种油脂 厌恶和喜悦。你耐心地在母亲身后排队等待该做什么 做人类的孩子。最后,你与十几岁的收银员面对面地见面,而不是见面 毫无怜悯之心。你点了一个汉堡(惊喜)和一些薯条。你付了钱 请稍等您点的菜

      过了一段时间,你拿到了汉堡,却发现他们忘了你的汉堡 炸薯条!你再次走到收银机前,向他们索要。你再等等 出去准备炸薯条。一旦他们来了,你就狼吞虎咽地离开

      这跟什么有关系? 焦虑的收银员是服务器,可能运行php

      您是客户,可能是一个能够理解html/css/js的web浏览器

      为了得到服务,你走近柜台说“我想要一个汉堡”。麦克伯格 然后准备并给你一个汉堡

      为了得到服务,一个网络浏览器靠近服务器说“我想要这个页面”。 然后,服务器将准备并提供一个页面

      这其中最重要的一点是,没有客户和客户的混合 麦克伯格。你不会自己准备薯条,麦克伯格也不会喝你的 奶昔。同样,web浏览器不会运行php,服务器也会运行 不要为您运行javascript。如果你想让McBurger给你他们著名的焦糖 冰淇淋,你必须到柜台去要一个。如果你想要你的网页 要在单击按钮时将某些内容保存到数据库,必须接近服务器 并要求它这样做

      你和麦克伯格通过声音交流。浏览器和服务器通过HTTP进行通信

      让我们看看HTTP

      兔子,你把我带到哪里去了? 如果您运行的是几乎所有的linux DI
      % nc www.stackoverflow.com 80
      
      % nc www.stackoverflow.com 80
      GET / HTTP/1.1
      
      HTTP/1.1 400 Bad Request
      Content-Type: text/html; charset=us-ascii
      Date: Sat, 02 Aug 2014 10:55:16 GMT
      Content-Length: 334
      
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
      <HTML><HEAD><TITLE>Bad Request</TITLE>
      <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
      <BODY><h2>Bad Request - Invalid Hostname</h2>
      <hr><p>HTTP Error 400. The request hostname is invalid.</p>
      </BODY></HTML>
      
      % nc www.stackoverflow.com 80
      GET / HTTP/1.1
      Host: stackoverflow.com
      
      # example.php
      <?php
      echo 'Hi mom!';
      ?>
      
      % nc localhost 80
      GET /example.php HTTP/1.1
      Host: localhost
      
      HTTP/1.1 200 OK
      Server: nginx/1.2.1
      Date: Sat, 02 Aug 2014 11:00:52 GMT
      Content-Type: text/html
      
      Hi mom!