2016-02-16 2 views
5

У меня есть функция внутри JQuery, когда при выполнении условия вызывается функция PHP. Все идет хорошо, пока я не могу file_put_contents. Кажется, что он должен выдать какой-то вывод, который JQuery не знает, как интерпретировать. Вот мой код:Вызов PHP-функции file_put_contents Изнутри JQuery

JQuery часть, где $ Загрузчик является экземпляром класса и finishedDownloading является Java-переменная:

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

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

} 

До сих пор так хорошо. И вот мой 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); 

Если я прокомментирую строки file_put_contents, все пройдет гладко.

Если я раскомментирую, когда я запустил код, я получаю сумасшедшую ошибку «uncaught referenceError», заявив, что моя функция JQuery не определена.

Может кто-нибудь сказать мне, что происходит?

Спасибо

Edit: Я думаю, что file_put_contents возвращает какое-то значение, что JQuery не знает, что делать с.

Edit 2: Это не может быть сделано, даже если я был в состоянии избавиться от ошибки Jquery, функция запускается на выполнение при загрузке страницы, не принимая во внимание, если заявление

+0

я не вижу Аякса – madalinivascu

+1

лучше начать изучать яваскрипт программирования, прежде чем получить работу done – madalinivascu

+0

Ajax оценивает ход загрузки, но он не связан с этой функцией. Ajax отлично работает – user3808307

ответ

2

В части JQuery вы не должны вызывать функции PHP, включив их в код javascript. В вашем примере PHP-код будет обрабатываться в любом случае, если условие if jQuery-компонента не встречается или нет.

Попробуйте что-нибудь подобное для JQuery:

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

И mergepdf.php как код:

<?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 находится внутри класса – user3808307

+0

Мне нужно $ _fileNamesArray изнутри класс – user3808307

+0

Есть ли способ предотвратить возвращение file_put_contents из булева? – user3808307

Смежные вопросы