ajax 调用的文件可以使用 ajax 调用另一个文件吗?[关闭]

Can a file that is called by ajax call another file using ajax? [closed]

提问人:yerapro15 提问时间:11/14/2023 最后编辑:yerapro15 更新时间:11/14/2023 访问量:49

问:


这个问题似乎与帮助中心定义的范围内的编程无关。

5天前关闭。

社群在 5 天前审查了是否重新打开这个问题,并将其关闭:

原始关闭原因未解决

我需要一个由ajax调用的PHP文件,以便在选择的值更改时由AJAX调用另一个文件。

例: -文件1.php 显示标题等。 对 file2.php 进行 Ajax 调用

文件2.php 显示具有可编辑字段及其数据的服务。 当我更改特定选择的值时,对 file3.php 进行 Ajax 调用

文件3.php 保存该可编辑字段的数据

我提到这一点是因为它不能从 File1.php 工作,但如果我直接从 File2.php 这样做,它确实有效。如果通过AJAX调用,File2.php中的javascript似乎不起作用。

javascript php ajax

评论

2赞 CBroe 11/14/2023
无论对 AJAX 请求的响应是什么,都需要由您在编码中处理。即使您返回 HTML 代码并将其插入到文档中,它包含的任何 JavaScript 也不会自动执行,您必须为此执行额外的步骤。但到目前为止,这里对这个问题的整个描述都尖叫着,这应该从一开始就以不同的方式构建。
4赞 CBroe 11/14/2023
“对 file3.php 进行 Ajax 调用” - “文件”不发出 AJAX 请求,AJAX 请求也不会发出“文件”。当某些 JS 代码指示时,浏览器会发出请求,并使其指向 URL,而不是“文件”。(URL 可能与服务器上的文件结构部分对应,但并非必须如此。因此,不要在这里过多地考虑“in”文件,而是通过首先确定正确的客户端逻辑来开始解决这个问题。
0赞 freedomn-m 11/14/2023
如果通过 AJAX 调用,File2.php 中的 javascript 似乎不起作用 - 这是您的问题 - 加载“file2”的 ajax 调用也需要启动任何脚本 - 它们不会自动加载。请参阅此答案以获取“file2”执行js的可能解决方案。(编辑:它使用所以使用风险自负) - 更好的解决方案是将 JS 从 PHP 移动到 JS 文件中并加载它们eval

答:

1赞 ADyson 11/14/2023 #1

不可以,因为 AJAX 使用 JS 在浏览器中运行。

如果您通过 AJAX 发送 HTTP 请求来执行 PHP 脚本,那么它将一如既往地在服务器上运行。但是在 AJAX 场景中,即使该 PHP 脚本包含一些 JS,该 JS 也永远不会加载到浏览器中(因为 AJAX 会导致异步后台请求,而不是将页面加载到浏览器选项卡中),因此 JS 代码当然永远不会运行。

请注意,即使您在第一次 AJAX 调用结束时使用 JS 将整个 File2 的输出插入到 DOM 中,也不会自动导致其中的 JS 被评估和执行 - 有关详细信息,请参阅此处

(注:N.B.通过 AJAX 调用的 PHP 脚本可以使用类似的东西发出另一个 HTTP 请求,但听起来它对您描述的场景没有帮助。cURL


看起来你的设计应该是这样的:

File1.php 是浏览器中显示的那个。这应该包含(或链接到)此功能所需的所有 JS 代码。

File2.php 通过 AJAX 调用,并返回一些数据(可能是 JSON 格式),然后 File1 中的代码构建一些 HTML 并显示该数据。

然后,当“change”事件发生在特定的 上时,一些 JS 代码(已经通过 File1 加载)运行并向 File3 发出 AJAX 请求。select