通过一个按钮,我想调用php函数和javascript函数

With one button I want to call a php function as well as a javascript function?

本文关键字:函数 调用 php javascript 按钮 一个      更新时间:2023-09-26

我有一个文件,在那里我使用了一个按钮,名为MP4 Quality,当我点击该按钮时,它会打开一个弹出窗口,并要求按下另一个按钮来下载视频,第一个按钮有javascript,当它点击时,打开弹出窗口并给出第二个按钮,从那里使用PHP,现在我希望它一键下载,

以下是第一个按钮的代码。。。

<button id="videoDownloadButton" type="button" class="btn btn-info btn-lg"          data-toggle="modal" data-target="#myModal" onClick="downloadVideo();">MP4 Quality</button>

当它点击时,下面的javascript代码将运行

function downloadVideo() {
    var videoID = player.getVideoData()['video_id']
    document.getElementById("downloadFormatList").innerHTML="Please wait. Processing...";
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp3 = new XMLHttpRequest();
  } else { // code for IE6, IE5
    xmlhttp3 = new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp3.onreadystatechange=function() {
    if (xmlhttp3.readyState==4 && xmlhttp3.status==200) {
         document.getElementById("downloadFormatList").innerHTML=xmlhttp3.responseText;
    }
  }
  //keyword = keyword.replace(/ /g, '%2B');
    xmlhttp3.open("GET","TMB/download.php?videoid="+videoID,true);
  xmlhttp3.send();
}

然后运行PHP代码,PHP代码是这样的。。。

if(isset($_REQUEST['videoid'])) {
$my_id = $_REQUEST['videoid'];
if(strpos($my_id,"https://youtu.be/") !== false)
{
    $my_id = str_replace("https://youtu.be/","",$my_id);
}
}

<?php
//$my_video_info = 'http://www.youtube.com/get_video_info?&video_id='.     $my_id;
$my_video_info = 'http://www.youtube.com/get_video_info?&video_id=' . $my_id . '&asv=3&el=detailpage&hl=en_US'; //video details fix *1
$my_video_info = curlGet($my_video_info);
/* TODO: Check return from curl for status code */
$thumbnail_url = $title = $url_encoded_fmt_stream_map = $type = $url = '';
parse_str($my_video_info);
?>

<?php
$my_title     = $title;
$cleanedtitle = clean($title);
if (isset($url_encoded_fmt_stream_map)) {
/* Now get the url_encoded_fmt_stream_map, and explode on comma */
$my_formats_array = explode(',', $url_encoded_fmt_stream_map);
if ($debug) {
    echo '<pre>';
    print_r($my_formats_array);
    echo '</pre>';
}
} else {
echo '<p>No encoded format stream found.</p>';
echo '<p>Here is what we got from YouTube:</p>';
echo $my_video_info;
}
if (count($my_formats_array) == 0) {
echo '<p>No format stream map found - was the video id correct?</p>';
exit;
}
/* create an array of available download formats */
$avail_formats[] = '';
$i               = 0;
$ipbits          = $ip = $itag = $sig = $quality = '';
$expire          = time();
foreach ($my_formats_array as $format) {
parse_str($format);
$avail_formats[$i]['itag']    = $itag;
$avail_formats[$i]['quality'] = $quality;
$type                         = explode(';', $type);
$avail_formats[$i]['type']    = $type[0];
$avail_formats[$i]['url']     = urldecode($url) . '&signature=' . $sig;
parse_str(urldecode($url));
$avail_formats[$i]['expires'] = date("G:i:s T", $expire);
$avail_formats[$i]['ipbits']  = $ipbits;
$avail_formats[$i]['ip']      = $ip;
$i++;
}

echo '<div class="format_list">';
echo '<br>';
echo '<table>';
 /* now that we have the array, print the options */
 for ($i = 0; $i < 1; $i++) {
if ($config['VideoLinkMode'] == 'direct' || $config['VideoLinkMode'] == 'both')
?> <tr><td><?php
echo $avail_formats[$i]['type'];
?></td>
    <td><small>(<?php
   echo $avail_formats[$i]['quality'];
 ?>)</small> </td>
    <td><small><span class="size"><?php
   echo formatBytes(get_size($avail_formats[$i]['url']));
?></span></small>
    </td>
    <td><a href="<?php
echo $avail_formats[$i]['url'];
?> '&title='<?php
echo $cleanedtitle;
?>'" class="downloadButton">Record Video</a></td>
    </tr>
<?php
}
?>

点击第一个按钮后,这个按钮就会出现,

<a href="<?php echo $avail_formats[$i]['url']; ?> '&title='<?php echo $cleanedtitle; ?>'" class="downloadButton">Record Video</a>

现在我想点击一下,我该怎么做。。。??

尝试在弹出页面的底部添加以下内容:

<script>
    window.location = '<?php echo $avail_formats[$i]['url']; ?>';
</script>

根据您的php代码,"第二个按钮"术语是不正确的。您可能有一个计数秒按钮,这些按钮具有不同的质量。

这就是php代码和第二次点击存在的原因。

如果你想立即下载视频,请在php代码中替换foreach循环

foreach ($my_formats_array as $format) {

  parse_str($format);
    $avail_formats[$i]['itag']    = $itag;
    $avail_formats[$i]['quality'] = $quality;
    $type                         = explode(';', $type);
    $avail_formats[$i]['type']    = $type[0];
    $avail_formats[$i]['url']     = urldecode($url) . '&signature=' . $sig;
    parse_str(urldecode($url));
    $avail_formats[$i]['expires'] = date("G:i:s T", $expire);
    $avail_formats[$i]['ipbits']  = $ipbits;
    $avail_formats[$i]['ip']      = $ip;
    $i++;
}

在上

    if (isset($my_formats_array[0])) {
          parse_str($my_formats_array[0]);
          header("Location: " . urldecode($url) . '&signature=' . $sig);
          die();
    }

并消除其他不必要的东西