我遇到了一个奇怪的问题,我能够提交文件并成功上传它们,现在我已经在网页的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 ] ");