php在AJAX调用之后回显2个函数之间的内容

时间:2017-03-03 09:24:01

标签: php jquery ajax

我正在寻找一种在两个函数之间获得回声(或其他任何东西)的方法,第一个通过Ajax调用。

这是我正在做的事情:

我通过Ajax将视频上传到临时存储的服务器。 然后将视频传递给私人功能,通过API将其发送到youtube,然后取消设置服务器上的视频。

我的问题:在两个函数之间,有没有办法从PHP脚本中获取客户端可以处理的信息,告诉他进度?

我试过了:

  • 发送JSon
  • 在Ajax调用
  • 时更新JS检查的会话
  • flush()和ob_flush()

但总是,数据在第二个函数的这一端返回(当我不再需要任何东西时),好像,在调用和所有之后,PHP无法说些什么

我想:

function upload()
{
    //uploading
    if(ok) 
    {
        //echoing something there (the main goal)
        goYoutube();
    }
}

private function goYoutube() {
//etc...
}       

我拥有的是:

 function upload()
 {
    //uploading
    if(ok) 
    {
        goYoutube();
    }
}

private function goYoutube() 
{
    //etc...
    //echoing something there (the bad bad bad useless thing)
}    

与CodeIgniter有关,我没有掌握服务器。

我不需要代码,只是一个想法(非常感谢)

当然,类似于"不会失去你的时间的人,它无法完成"没关系!

感谢。

2 个答案:

答案 0 :(得分:2)

PHP是一种服务器端语言,我不认为它会在脚本完成执行之前输出一些内容。如果我是你,我会尝试在两个单独的AJAX请求中拆分这些函数。

第一个请求会向用户提供一切正常的答案(或类似#34;请等待"),第二个请求会调用YouTube API。

答案 1 :(得分:1)

您可以通过建立websocket连接并将事件从服务器发送到客户端来完成此操作。我通常使用socket.io在nodejs中执行此操作。我发现PHP有一个类似的选项:elephant.io

所以事情的顺序是:

  • 与服务器建立websockets连接(在发送视频之前)
  • 在客户端,听取您将收到的事件并进行更新。
  • 视频上传。
  • 在服务器端,发送一个websockets事件,您可以在其中放置" echo"

看看它,我真的认为它会这样做。