【问题标题】:My background php script needs to execute javascript. How?我的后台 php 脚本需要执行 javascript。如何?
【发布时间】:2013-07-02 16:20:04
【问题描述】:

这就是我正在使用的...

一些javascript(我们称之为'apples.js')是在客户端执行的,我想在该javascript中做的一件事是使用Ajax在后台运行一个php脚本。这很容易。

我正在使用的 php 脚本基于一个带有数据字段的 php 页面,并在末尾调用了一个 js 函数来保存数据。 (让我们将此另一个 js 文件称为“bananas.js”)我想通过将数据从 apples.js 传递到 php 文件来填充后台 php 文件的字段。我的困境是我的php文件最后需要在bananas.js中执行一个函数,但如果php文件在后台运行,我认为这不会起作用。显然我必须通过 onclick 以外的方法调用bananas.js 函数,但即便如此,我认为javascript 不能在后台运行。 正确吗?有没有简单的处理方法?

我猜是最坏的情况,我必须将香蕉.js 中的函数改编成 apples.js 并跳过 PHP 中间脚本。我希望我可以避免这种情况,因为我更喜欢在该软件的现有框架内工作并保持简单(我也不十分关心编程效率;该软件正在开发为我公司私人门户的一部分) .

【问题讨论】:

  • “我认为 JavaScript 不能在后台运行”——我不明白这是什么意思。 JavaScript 是基于 event 的。这里有实际的导航吗? (也就是以传统方式切换页面?)。我不确定我是否完全理解这个问题,我有点困惑。您介意详细说明程序的流程吗? (就像用户点击 x 一样,一个 ajax 被发送到...)
  • Http 的工作原理如下:您从浏览器进行请求,服务器是否返回某些内容。如果没有返回任何内容,则不会再执行客户端内容
  • 当php看到AJAX发出的请求时,你总是可以在php生成的内容的末尾添加<script>bananaFunction();</script>之类的东西。
  • 其实@Benjamin,你现在可以在后台运行 JavaScript。查看网络工作者developer.mozilla.org/en-US/docs/Web/Guide/Performance/…。除此之外,mplungian 是对的。一旦您的 JavaScript 运行所服务的 PHP,它就不再运行(或不应该运行)。没有什么可以阻止你发出新的请求,但一旦你运行了调用香蕉.js 的 apples.js - 事实上我怀疑这是你应该做的。
  • @cirrus 我什么时候说过我不知道网络工作者的事情?我只是说我不明白 OP 在这里是什么意思,或者他想要完成什么。 (如果您查看我的个人资料,顺便说一下,我有 几个 使用网络工作者的答案)

标签: php javascript ajax background server-side


【解决方案1】:

你为什么不在你的 ajax 方法上使用回调。

如果你使用的是 jQuery...

apples.js

$.ajax({
    type: 'POST',
    data: {
        val1: 'one', 
        val2: 'two'
    },
    success: function (data) { //data is what is being returned by the .php script
        //now call your bananas.js function and pass in your data
        callBananas(data);
    },
    error: function (jqXHR) {
        console.log(jqXHR);
    }
});

bananas.js

var callBananas = function(data) {
    //Do something...
}

【讨论】:

  • 这就是我最终要做的。我最初想利用已经存在的中间 php 文件,以便我可以有一个快速而肮脏的解决方案。相反,我只花了几个小时用 javascript 处理这一切。谢谢。
【解决方案2】:

一般来说,从 PHP 调用 JavaScript 是不值得的。

只需在 PHP 中重新实现该函数即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    相关资源
    最近更新 更多