javascript - 为什么从 PHP 发出的 Javascript 函数找不到?

标签 javascript php jquery

我很困惑。我以前做过这个,知道这应该可行,但无法理解为什么找不到该函数。也许第二双眼睛会揭开这个谜团。

我已经使用 JavaScript 测试了它的存在。请参阅下面的控制台日志。

PHP(跳到最后查看语句)。

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once "dbconnect.php";

$uploadDirectory = '/home/deje/public_html/writers-tryst/uploads/'; //specify upload directory ends with / (slash)
require_once "dbconnect.php";
$result = 0;
$File_Name          = basename($_FILES['file2upload']['name']);
$File_Ext           = substr($File_Name, strrpos($File_Name, '.')); //get file extention
$Random_Number      = rand(0, 9999999999); //Random number to be added to name.
$NewFileName        = $Random_Number.$File_Ext; //new file name

$target_path = $uploadDirectory . $NewFileName;

if (@move_uploaded_file($_FILES['file2upload']['tmp_name'], $target_path)) {
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mime_type = finfo_file($finfo, $uploadDirectory . $NewFileName);
    finfo_close($finfo); 
    if ($mime_type != 'application/pdf') {
        unlink($UploadDirectory . $NewFileName);
        $data = array('File MUST be a PDF!');
        $result = 0;
    } else $result = 1;
}
if (!isset($_REQUEST["title"]) || empty(trim($_REQUEST["title"])))
    throw new Exception('You must enter a title.');       
else {
    $title = filter_var(trim($_REQUEST["title"]), FILTER_SANITIZE_STRING);
    $title = htmlspecialchars_decode($title, ENT_QUOTES);
}
if (!isset($_REQUEST["userid"]) || empty(trim($_REQUEST["userid"])))
    throw new Exception('Userid is missing.');       
else {
    $userid = filter_var(trim($_REQUEST["userid"]), FILTER_SANITIZE_STRING);
    $userid = htmlspecialchars_decode($userid, ENT_QUOTES);
}
if (!isset($_REQUEST["work-type"]) || empty(trim($_REQUEST["work-type"])))
    throw new Exception('You must enter a work type.');       
else {
    $worktype = filter_var(trim($_REQUEST["work-type"]), FILTER_SANITIZE_STRING);
    $worktype = htmlspecialchars_decode($worktype, ENT_QUOTES);
}
if (!isset($_REQUEST["genre"]) || empty(trim($_REQUEST["genre"])))
    throw new Exception('You must enter a title.');       
else {
    $genre = filter_var(trim($_REQUEST["genre"]), FILTER_SANITIZE_STRING);
    $genre = htmlspecialchars_decode($genre, ENT_QUOTES);
}
if (!isset($_REQUEST["subgenre"]) || empty(trim($_REQUEST["subgenre"])))
    throw new Exception('You must enter a sub-genre.');       
else {
    $subgenre = filter_var(trim($_REQUEST["subgenre"]), FILTER_SANITIZE_STRING);
    $subgenre = htmlspecialchars_decode($subgenre, ENT_QUOTES);
}
if (!isset($_REQUEST["nbrPages"]) || empty(trim($_REQUEST["nbrPages"])))
    throw new Exception('You must enter the number of pages your work contains.');       
else {
    $nbrPages = filter_var(trim($_REQUEST["nbrPages"]), FILTER_SANITIZE_STRING);
    $nbrPages = htmlspecialchars_decode($nbrPages, ENT_QUOTES);
}

$dbh = connect2DB();
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare(
    "INSERT Writers(fkAccounts, Title, WorkType, Genre, SubGenre, Filename) 
    VALUES(:fk, :title, :worktype, :genre, :subgenre, :filename)"
);

$stmt->bindParam(':fk', $userid, PDO::PARAM_INT, 10);
$stmt->bindParam(':title', $title, PDO::PARAM_STR, 255);
$stmt->bindParam(':worktype', $worktype, PDO::PARAM_STR, 30);
$stmt->bindParam(':genre', $genre, PDO::PARAM_STR, 100);
$stmt->bindParam(':subgenre', $subgenre, PDO::PARAM_STR, 100);
$stmt->bindParam(':filename', $NewFileName, PDO::PARAM_STR, 30);

$stmt->execute();

//echo "<script type='text/javascript'>stopUpload(" . $result . ");</script>";

?>
<script type='text/javascript'>stopUpload(1);</script>;

JS

 function startUpload() {
    console.log("stopUpload=" + stopUpload)
    $("#userid").val(window.localStorage.getItem('user-id'));
    showMessage(1, "Uploading...");
    return true;
 }

function stopUpload (success) {
    var result = '';
    if (success == 1) {
        showMessage(1, "File uploaded successfully");
    }
    else {
        showMessage(0, 'There was an error uploading the file.');
    }
    return true;
}

控制台日志

stopUpload=function stopUpload(success) { var result = ''; if (success == 1) { showMessage(1, "File uploaded successfully"); } else { showMessage(0, 'There was an error uploading the file.'); } return true; } writers.php:1 Uncaught ReferenceError: stopUpload is not defined(anonymous function) @ writers.php:1

编辑:

请注意 PHP 代码中的注释。这也行不通。

最佳答案

您正在调用该函数:

<script type='text/javascript'>stopUpload(1);</script>

但在调用它之前,您需要加载 JS:

<script src='./pathto/something.js'></script>; <!-- something.js declares stopUpload -->
<script type='text/javascript'>stopUpload(1);</script>

关于javascript - 为什么从 PHP 发出的 Javascript 函数找不到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278057/

相关文章:

php - 尝试使用 JS 和 PHP 下载 "Hello world"

php - 如何使用javascript显示鼠标悬停在多个div上的div?

jquery - 侧面的 Bootstrap 轮播文本

Javascript全局数组对象无法读取

javascript - 如何解决 Slick carousel jquery 冲突问题?

javascript - 在字符串中搜索和替换

javascript - 获取已由浏览器加载的图像的 Javascript 中的唯一标识符

php - 需要帮助理解 php 签名验证

php - 我如何使用 omnipay 检查它是否是待处理的付款

javascript - 返回函数的 JS 类