douaoj0994
douaoj0994
2014-09-08 17:22
浏览 52

HTML表和内部按钮调用Javascript函数

I have created a table as such in file1.php:

<table id="myTable" style="width:100%;">
    <tr>
      <td><?php echo $string1; ?></td>
      <td><?php echo $string2; ?></td>
      <td><?php echo $string3; ?></td>
      <td><?php echo $string4; ?></td>
      <td><?php echo $string5; ?></td>
    <tr>

  <?php
  if(file_exists($filesDir))
  {
     foreach (new DirectoryIterator($filesDir) as $file)
     {
        if((htmlentities($file) !== ".") && (htmlentities($file) !== ".."))
        {
          /* get the file name, creation date and size */
          $filename = htmlentities($file);
          $filecdate = date("d-m-Y H:i:s", filectime($filesDir.$file));
          $filesize = filesize($filesDir.$file) /(pow(1024, 2));
        ?>
          <tr>
            <!-- print filename -->
            <td><?php echo $filename; ?></td>
            <!-- print file creation date -->
            <td><?php echo $filecdate; ?></td>
            <!-- print filesize -->
            <td><?php echo number_format($filesize, 2, '.', '\'')." MB"; ?></td>

            <!-- print button #1 -->
            <td> <?php echo "<input type=\"button\" value=\"D\" onClick=\"downloadFile($filename)\"/>"; ?> </td>

            <!-- print button #2 -->
            <td> <?php echo "<input type=\"button\" value=\"X\" onClick=\"eraseFile($filename)\"/>"; ?> </td>
          </tr>
        <?php
        }
     }
  }
  ?>
  </table>

And I have written a Javascript function in another js file:

function downloadFile(filename)
{
  $("#activity").html("<img src=\"imagenes/indicator.gif\" style=\"left: 590px;top: 74px;margin: auto;position: absolute;width: 32px;height: 32px;\" />");

    window.location.href = "file3.php?filename=" + filename;
}

Finally, in a PHP file called file3.php I use the filename value obtained with the downloadFile function, as so:

if(isset($_GET["filename"]))
{
  $filename = $_GET["filename"];

  if(file_exists($filesFolder.$filename))
  {
    set_time_limit(0);
    ob_start();
    //header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
    //header('Content-Description: File Transfer');
    header('Content-Disposition: attachment; filename='.basename($filename));
    //header('Content-Transfer-Encoding: binary');
    header('Expires: 5');
    header('Cache-Control: must-revalidate');
    //header('Pragma: public');
    header('Content-Length: ' . filesize($filesFolder.$filename));
    readfile($filesFolder.$filename);
    ob_end_flush();
    exit;
  }

But when I click the button from file1.php the Javascript function is not executed. Could you please help to understand where I am wrong?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dskpywvki951583595
    dskpywvki951583595 2014-09-08 17:44
    已采纳

    Your $filename var will be a string. So try to add quotes.

    onClick=\"downloadFile('$filename')\"
    

    I'm not sure this is the only error, but I'm sure this is one.

    点赞 评论
  • doze79040
    doze79040 2018-06-28 14:58

    I recommend you to not use php to print html tags as much you can.

    Instead of:

    <td><?php echo "<input type=\"button\" value=\"D\" onClick=\"downloadFile($filename)\"/>"; ?> </td>
    

    Try to use:

    <td><input type="button" value="D" onClick="downloadFile('<?php echo $filename;?>');"/></td>
    

    Also in the first row, I suppose you may want to use < th> instead of < td>.

    Use also the < thead> and the < tbody> tags (without spaces).

    点赞 评论

相关推荐