Ajax如何使Javascript字符串能够传递到php


How Ajax enables a Javascript string to be passed to php

我一直在学习Ajax,现在我想知道它是如何允许Javascript中的字符串传递到php的。

之前有人说过,将Javascript传递给PHP的问题是,首先运行PHP代码,然后运行Javascript。所以当Javascript生成一个字符串时,已经太晚了。

这是否意味着Ajax允许PHP代码在Javascript之后运行?

我认为这就是他们的目标:

在Ajax出现之前——具体地说,在XMLHttpRequest出现之前——单个网页被用作单个页面加载。如果是PHP生成的包含Javascript的页面,浏览器会请求页面,PHP会生成页面(包括Javascript代码、includes、页面上的脚本片段等),并将页面发送到浏览器,浏览器会显示它。因此,PHP是提前发生的。直到下一次加载页面时,整个页面被从头开始刷新,PHP才再次参与其中。

在XMLHttpRequest出现后,它帮助将"X"放在"AJAX"中,就像当时一样,您有了另一个选择。页面加载后,您的Javascript可以在页面的"后台"发出请求,从服务器请求更多信息,而无需重新加载页面。实际上,加载的页面可能会导致更多的PHP在服务器上运行,并显示结果。

因此,如果您正在考虑从基于PHP的网站加载单个页面,这就是Ajax的意思;如果没有它,您将获得一个交付的PHP页面构建,然后您的Javascript必须单独运行该结果。使用Ajax,您可以向服务器发出进一步的请求,并在不加载整个页面的情况下将结果抛出到现有页面上。

服务器上的php解释器基本上是将任何php脚本解释为(通常)HTML页面。

这就是为什么您永远不能将javascript变量"传递"到php中,因为对于解释器来说,您的javascript只是另一个字符串,没有任何特殊意义。您的javascript由浏览器运行,甚至不知道它是由PHP生成的。

我相信这就是"太迟了"的意思。

您应该知道,Javascript始终是客户端(Node.js除外)。PHP是一种服务器端语言。

您不能将Javascript变量传递给PHP,至少在Pageload中不能。

所能做的是在页面老化后执行AJAX请求,以便将某些内容发送到PHP。通过该调用的响应,您可以替换当前请求页面上的其他内容。

这并不意味着"Ajax允许PHP代码在Javascript之后运行"。AJAX是对服务器的一个新请求,它允许您使用服务器的响应进行操作。您可以通过复制AJAX请求所指向的url并将其粘贴到浏览器中来观察这一点
所以基本上,当你用浏览器打开一个网站时,你会发送一个请求,任何AJAX调用都是请求,但都是在后台完成的,所以你不能直接看到它。例如,您可以使用firebug或其他开发人员的工具来查看幕后发生了什么。它与脚本执行顺序无关。