2016-02-16 29 views
5

Ho una funzione all'interno di JQuery che quando una condizione è soddisfatta chiama una funzione PHP. Tutto va bene finché non posso file_put_contents. Sembra che debba generare un qualche tipo di output che JQuery non sa come interpretare. Ecco il mio codice:Chiamare la funzione PHP file_put_contents Da Inside JQuery

JQuery parte, dove $ downloader è l'istanza di classe e finishedDownloading è una variabile javascript:

if (finishedDownloading==<?php echo $downloader->_totalFiles ?>){ 

    <?php $downloader->MergePDFs(); ?> 

} 

Fin qui tutto bene. Ed ecco il mio php:

function MergePDFs() 
    { 

     $combinedFiles = ""; 

     foreach ($this->_fileNamesArray as $filename) { 
      $combinedFiles .= file_get_contents($filename); //these are the urls of my files 
     } 


     echo "document.getElementById('test-if-finished').innerHTML = 'Test output: " . $this->_file . "'"; // this is for testing 

     //The above code works, the problem comes when I add the lines below 

     file_put_contents("all-files.pdf", 
       $combinedFiles); 

Se commento le righe file_put_contents tutto procede senza intoppi.

Se disattivo, quando eseguo il codice ottengo un errore pazzesco "uncaught referenceError" che dichiara che la mia funzione JQuery non è definita.

Qualcuno può dirmi cosa sta succedendo?

Grazie

Edit: Credo che file_put_contents sta tornando un po 'di valore che JQuery non sa cosa fare con.

Edit 2: Questo non poteva essere fatto, anche se ero in grado di sbarazzarsi dell'errore jquery, la funzione viene eseguito al caricamento della pagina, non prendendo in considerazione l'istruzione if

+0

non vedo alcun ajax – madalinivascu

+1

meglio iniziare a conoscere javascript programmazione prima di ottenere un posto di lavoro done – madalinivascu

+0

L'ajax valuta l'avanzamento dei download, ma non ha a che fare con la funzione. L'Ajax funziona bene Ivascu – user3808307

risposta

2

Nella parte jQuery si non chiamare le funzioni PHP includendole nel codice javascript. Nell'esempio, il codice PHP verrebbe comunque elaborato, a meno che la condizione if della parte jQuery non sia soddisfatta.

Prova qualcosa di simile per jQuery:

if (finishedDownloading==<?php echo $downloader->_totalFiles ?>){ 
    $.get('mergepdf.php'); 
} 

E mergepdf.php come il tuo codice:

<?php 
function MergePDFs() 
{ 

    $combinedFiles = ""; 

    foreach ($this->_fileNamesArray as $filename) { 
     $combinedFiles .= file_get_contents($filename); //these are the urls of my files 
    } 


    echo "document.getElementById('test-if-finished').innerHTML = 'Test output: " . $this->_file . "'"; // this is for testing and works fine 

    file_put_contents("all-files.pdf", 
     $combinedFiles); 
    ... 
} 

MergePDFs(); 
+0

MergePDFs è all'interno di una classe – user3808307

+0

ho bisogno $ _fileNamesArray dall'interno la classe – user3808307

+0

Esiste un modo per impedire che file_put_contents restituisca un valore booleano? – user3808307

Problemi correlati