2017-01-31 1 views
1

setzen Ich benutze PHP und Javascript auf meinem Code.Ich möchte Php-Funktion mit Javascript

Wenn ich das Foto auswählen. Ich zeige Bilddetails mit Javascript. Jetzt funktioniert es, aber ich bekomme Daten mit Javascript, wenn ich die Fotogröße zeige seine zeigt wie '339.827 KB'. Ich möchte das nicht mögen.

Ich habe PHP-Funktion. Es konvertiert Byte in Megabyte. Wie kann ich Javascript mit php Funktion benutzen?

Javascript

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#openFile').on('change', function (evt) { 
      document.getElementById('fileName').innerHTML = this.files[0].name; 
      document.getElementById('fileSize').innerHTML = ((this.files[0].size/1024)).toFixed(4) + " KB"; // this area 
      document.getElementById('fileType').innerHTML = this.files[0].type; 

      var _URL = window.URL || window.webkitURL; 

      if (this.files[0].name.match(/\.(jpg|jpeg|png|gif)$/)) { 
       var image, file; 
       if ((file = this.files[0])) { 
        image = new Image(); 
        image.onload = function() { 
         var resolution = this.width + " x " + this.height; 
         document.getElementById('imageResolution').innerHTML = resolution; 
        }; 
        image.src = _URL.createObjectURL(file); 
       } 
      } else { 
       document.getElementById('imageResolution').innerHTML = ""; 
      } 
     }); 
    }); 
</script> 

PHP

<?php function byte_Format($size, $decimals = 0){ 
$unit = array(
    '0' => 'Byte', 
    '1' => 'Kb', 
    '2' => 'Mb', 
    '3' => 'Gb', 
    '4' => 'Tb', 
    '5' => 'Pb', 
    '6' => 'Eb', 
    '7' => 'Zb', 
    '8' => 'Yb' 
); 

for($i = 0; $size >= 1024 && $i <= count($unit); $i++){ 
    $size = $size/1024; 
} 

return round($size, $decimals).' '.$unit[$i]; 


} ?> 

Ich möchte die erreichen ->document.getElementById('fileSize').innerHTML = <?php byte_Format(size,2); ?>

Hinweis: Die "Größe" von Javascript kommt in byte_Format Funktion.

+2

Warum nicht einfach umschreiben, dass die PHP-Funktion in JS? – Tom

+0

Es ist eine schlechte Programmierung ... Sie können andere prog Sprachen Funktionen setzen, wenn es nicht in JS verfügbar ist –

Antwort

0

allererst Sie nicht php function in Ihrem javascript weil PHP nennen kann, ist vollständig auf Server-Seite ausgeführt und javascript ist rein in Ihrem Browser. Du kannst das mit Ajax machen. Sie können Ihre Variable über Ajax an die Serverseite übergeben, wo php Ihr ​​Byte in Megabyte konvertieren und zurückgeben kann.

Zweitens können Sie PHP-Funktion in Javascript umschreiben, das ist nicht so schwierig von wo aus ich sehen kann. Ich habe es auf Javascript umgewandelt und unten für Sie eingefügt:

<script> 
    function byte_Format($size, $decimals) 
    { 
     $size = parseFloat($size); 
     $decimals = $decimals || 0; 
     var $unit = ['Byte','Kb','Mb','Gb','Tb','Pb','Eb','Zb','Yb']; 

     for($i = 0; $size >= 1024 && $i <= $unit.length; $i++){ 
      $size = $size/1024; 
     } 

     return $size.toFixed($decimals) + ' ' + $unit[$i]; 
    } 
</script> 

Jetzt können Sie erreichen es mögen: ->document.getElementById('fileSize').innerHTML = byte_Format(size,2);

+1

Als eine Sache von Javascript-Stil sollten Sie die $ Zeichen vor den Variablennamen entfernen. –

+1

@ Furqan Aziz vielen Dank –