不能从php中检索变量


Can't retrieve variable from php

PHP FILE:

<?php
#Communication with the API
require_once 'api.php';
$cloudkey = new CloudKey($user_id, $api_key);

if(isset($_FILES["FileInput"]) && $_FILES["FileInput"]["error"]== UPLOAD_ERR_OK)
{
    //Deleted Code: putting the uploaded files in my server.
    if(move_uploaded_file($_FILES['FileInput']['tmp_name'], $UploadDirectory.$NewFileName ))
       {
 $video_file = "/home/george/public_html/q/"; 
 $video_file = $video_file . $NewFileName; 
#Sending the video from my server to the cloud server
$res = $cloudkey->file->upload_file($video_file);
#The cloud server will create a link
$source_url = $res->url;
#The cloud server will convert the video very fastly
while(1) {
    #Deleted Code: Conversion
    if ($asset->status == 'ready') {
        # A lot of code. It will convert the videos here and if it succeeds it will stop.
    break;
    # If the conversion fails, display error
    } else if ($asset->status == 'error') {
        echo "Error while transcoding the media'n";
    }
    sleep(1);
}

# Getting the URL of a thumbnail
echo $thumb = $cloudkey->media->get_stream_url(array('id' => $media_id, 'asset_name' => 'jpeg_thumbnail_source'));
    }else{
        die('error uploading File!');
    }
}
else
{
    die('Something went wrong!');
}
?>

HTML文件:

  {literal}
<script type="text/javascript">

$(document).ready(function() { 
    var options = { 
            target:   '#output',   // target element(s) to be updated with server response 
            beforeSubmit:  beforeSubmit,  // pre-submit callback 
            success:       afterSuccess,  // post-submit callback 
            uploadProgress: OnProgress, //upload progress callback 
            resetForm: true        // reset the form after successful submit 
        }; 

//function after succesful file upload (when server response)
function afterSuccess()
{
    $('#loading-img').hide(); //hide submit button
    $('#progressbox').fadeOut(); //hide progress bar
    //I WANT TO INSERT SOMETHING HERE.
}

//progress bar function
function OnProgress(event, position, total, percentComplete)
{
   //DOES NOT INTEREST YOU
}); 
</script>

{/literal} 
<div id="output"></div>

我正在使用smarty模板引擎。我有一个html上传表单,它将与php文件progressupload.php进行通信,其中php文件将转换视频(使用API服务)并在完成时带回响应。

当用户上传视频文件时,ajax将接管显示百分比(在html中),它将把文件发送到progressupload.php,当progressupload.php完成转换时,它将输出在php中响应的所有内容,只需将其放在html文件中(我不知道为什么):<div id="output"></div> .

我要的:

progressupload.php完成转换后,它将生成一个缩略图(截图)并将其链接存储在$thumb中。我想检索$thumb并使用jquery将其显示给用户。

现在,如果您查看HTML代码,afterSuccess()是我想向用户显示缩略图的函数:

function afterSuccess()
{
    $('#loading-img').hide(); //hide submit button
    $('#progressbox').fadeOut(); //hide progress bar
    //I WANT TO SHOW THE THUMBNAIL HERE.
}

我删除了很多不必要的代码,这些代码可能会分散你的注意力。记住,我使用的是smarty模板引擎,我的html文件不以.php结尾,我不能直接回显变量。如何检索php变量并在变量创建后将其放入jquery方法中?

我有一个怀疑,如果你检索变量直接在页面加载,它不会成功地获得$thumb,因为链接需要时间来创建(上传,转换)。我怎样才能检索到$thumb ?

假设您正在使用jQuery.ajax();
第一个参数。Ajax的'success'回调是从服务器端返回的。

function afterSuccess( response /** this is what returned from your server **/ )
{
    $('#loading-img').hide(); //hide submit button
    $('#progressbox').fadeOut(); //hide progress bar
    //I WANT TO INSERT SOMETHING HERE.
    console.log(response); // here you can access your $thumbnail
    // below code is untested but it should work
    // $("#output").html("<img src='"+response+"' class='thumbnail' />");
}