从JQuery内部调用PHP函数file_put_contents

时间:2016-02-16 09:00:35

标签: javascript php jquery

我在JQuery中有一个函数,当满足条件时调用PHP函数。一切顺利,直到我可以file_put_contents。似乎必须抛出JQuery不知道如何解释的某种输出。这是我的代码:

JQuery部分,其中$ downloader是类实例,finishedDownloading是一个javascript变量:

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行,一切顺利。

如果我取消注释,当我运行代码时,我会收到一个疯狂的错误&#34; uncaught referenceError&#34;声明我的JQuery函数没有定义。

有人可以告诉我发生了什么事吗?

谢谢

编辑:我认为file_put_contents正在返回一些JQuery不知道如何处理的值。

编辑2:这无法完成,即使我能够摆脱jquery错误,该函数在页面加载时执行,而不考虑if语句

1 个答案:

答案 0 :(得分:2)

在jQuery部分中,您不应该通过将它们包含在javascript代码中来调用PHP函数。在您的示例中,无论如何都将处理PHP代码,除非jQuery部分的if条件符合或不符合。

为jQuery尝试类似的东西:

var message: String? = ""
var error: ErrorType?

let dispatchGroup = dispatch_group_create()
dispatch_group_enter(dispatchGroup)

FacebookGraphAPI.getPostsWithCompletionHandler("[pageID]", parameters: ["limit": 1]) {
    (posts, error) in

    if error != nil {
        error = ErrorType.Some
    }

    if posts == nil || posts!.count == 0 || !posts![0].createdTime.isToday {
        error = ErrorType.Some
    }

    if error == nil {
        message = posts![0].message
    }

    dispatch_group_leave(dispatchGroup)
}

dispatch_group_wait(dispatchGroup, DISPATCH_TIME_FOREVER)

if error != nil {
    throw error!
}

return message

和mergepdf.php一样,你的代码:

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