文件提交工作,直到我添加了jQuery,什么问题


File submission worked until I added jQuery, whats the issue?

我遇到了一个奇怪的问题,我能够提交文件并成功上传它们,现在我已经在网页的head中添加了这一点jQuery,它似乎不再工作了:

我在没有jQuery的情况下再次测试了,它工作得很好,我的jQuery在某个地方弄乱了它。不管怎样,我可以用不同的方式完成同样的目标?

Jquery:

$(document).ready(function() {
    var options = $('select[name=itemType]');
    var optionVal = options.val();
    var filer = $('input[name=itemFile');
    var filerVal = $('input[name=itemFile]').val();
    options.change(function() {
        optionVal = $(this).val();
        if(optionVal == 1 || optionVal == 3) {
            $('input[name=itemContact]').removeAttr('disabled');
            $('input[name=itemContact]').attr('required','true');
        } else {
            $('input[name=itemContact]').attr('disabled','true');
            $('input[name=itemContact]').removeAttr('required');
        };
        if(optionVal != 5) {
            $('input[name=itemFile]').removeAttr('disabled');
            $('span.inputFile').css("display","block");
        } else {
            $('input[name=itemFile]').attr('disabled','true');
            $('span.inputFile').css("display","none");
        };
    });
    filer.change(function() {
        filerVal = $(this).val();
        $(this).parent().text(filerVal);
    });
});
HTML表单:

注意:$sectionName在前面的网页中被定义,并且工作

<form class="col-12" method="post" action="./action.php?upload" enctype="multipart/form-data">
    <p class="head">Upload to <i><?php echo $sectionName; ?></i></p>
    <div class="con">
        <input name="sectionID" type="hidden" value="<?php echo $section; ?>" required />
        <select name="itemType" required>
            <option selected disabled>Select an Item Type</option>
            <option value="1">Downloadable, Contact</option>
            <option value="2">Downloadable</option>
            <option value="3">Installable, Contact</option>
            <option value="4">Installable</option>
            <option value="5">Browsable</option>
        </select>
        <span class="inputFile" style="display:none;">
            Select a File
            <input name="itemFile" type="file" required />
        </span>
        <input name="itemName" type="text" placeholder="Enter Item Name" required />
        <input name="itemContact" type="email" placeholder="Enter Contact Email Address" disabled />
        <button type="submit">Submit</button>
    </div>
</form>

action.php?upload:

$fileDir = "./uploads/";
$fileName = preg_replace("/[^A-Z0-9._-]/i", "_", $_FILES['itemFile']["name"]);
$itemDir = $fileDir. $fileName;
$sectionID = $_POST['sectionID'];
$itemName = $_POST['itemName'];
$itemType = $_POST['itemType'];
$itemContact = $_POST['itemContact'];
if (file_exists($itemDir)) {
    echo '<p class="alert">Sorry, file already exists</p>';
} else {
    if (move_uploaded_file($_FILES["itemFile"]["tmp_name"], $itemDir)) {
        mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
        if($createItem = $con->prepare("INSERT INTO items(sectionID,itemName,itemType,itemDir) VALUES(?,?,?,?)")) {
            $createItem->bind_param("isis", $sectionID,$itemName,$itemType,$itemDir);
            if($createItem->execute()) {
                $itemID = $createItem->insert_id;
                if($itemType == 1 || $itemType == 3) {
                    if($createContact = $con->prepare("INSERT INTO contacts(itemID,itemContact) VALUES(?,?)")) {
                        $createContact->bind_param("is", $itemID,$itemContact);
                        if($createContact->execute()) {
                            echo '<p class="alert">Item Created</p>';
                        } else {
                            echo "<p class=alert'>Execute failed: [createContact] (" . $createContact->errno . ") " . $createContact->error. '</p>';
                        };
                    } else {
                        echo '<p class="alert">Item Created</p>';
                    };
                    $createContact->close();
                };
            };
        };
        $createItem->close();
    };
};

而不是上传文件,或将其存储在$_FILES,它甚至没有被传递到action.php。我已经检查了$_POST$_FILES,它没有显示在任何一个,而之前它做了。

注意:这是我的web服务器上的一个内部网站,所以如果它容易受到SQL注入的攻击也没关系。

选择器在这一行无效

var filer = $('input[name=itemFile');

var过滤器= $('输入[name = itemFile ] ");

相关文章: