エラーコンソールで以下のエラーを受け取りましたが、問題が発生しているビューソースに表示されません。
typeError: $(...).text(...).html is not a function
しかし、エラーがどこから来ているのかを理解しようとすることで、キャンセルボタンをクリックした後に表示される以下のコードにあると思います。
function htmlEncode(value) { return $('<div/>').text(value).html(); }
私はグーグルでこの問題が何であるかを見つけることができませんが、誰かが私のjqueryコードにエラーを見ますか?エラーがある場合、コードのエラーによりコンソールでエラーが発生する可能性があります。
フルコード:
以下はhtmlエンコードです:
function htmlEncode(value) { return $('<div/>').text(value).html(); }
アップロードを開始するための関数:
function startImageUpload(imageuploadform){
$(imageuploadform).find('.imagef1_upload_process').css('visibility','visible');
$(imageuploadform).find('.imagef1_cancel').css('visibility','visible');
$(imageuploadform).find('.imagef1_upload_form').css('visibility','hidden');
$(imageuploadform).find('.imagemsg').css('visibility','hidden');
sourceImageForm = imageuploadform;
$(".sbtnimage").attr("disabled", "disabled");
$(".sbtnvideo").attr("disabled", "disabled");
$(".sbtnaudio").attr("disabled", "disabled");
$(imageuploadform).find(".imageCancel").on("click", function(event) {
$('.upload_target_image').get(0).contentwindow;
stopImageUpload(2);
$("iframe[name='upload_target_image']").on("load",function() {
stopImageUpload(1);
}).attr("src", "cancelimage.php");
});
return true;
}
var imagecounter = 0;
アップロードを停止する関数:
function stopImageUpload(success, imagefilename){
var result = '';
imagecounter++;
if (success == 1){
result = '<span class="imagemsg'+imagecounter+'">The file was uploaded successfully</span>';
$('.listImage').eq(window.lastUploadImageIndex).append('<div>' + htmlEncode(imagefilename) + '<button type="button" class="deletefileimage" image_file_name="' + imagefilename + '">Remove</button><br/><hr/></div>');
}
else if (success == 2){
result = '<span class="imagemsg'+imagecounter+'"> The file upload was cancelled</span>';
}
else {
result = '<span class="imagemsg'+imagecounter+'">There was an error during file upload</span>';
}
$(sourceImageForm).find('.imagef1_upload_process').css('visibility','hidden');
$(sourceImageForm).find('.imagef1_cancel').css('visibility','hidden');
$(sourceImageForm).find('.imagemsg').html(result);
$(sourceImageForm).find('.imagemsg').css('visibility','visible');
$(sourceImageForm).find(".fileImage").replaceWith("<input type='file' class='fileImage' name='fileImage' />");
$(sourceImageForm).find('.imagef1_upload_form').css('visibility','visible');
$(".sbtnimage").removeAttr("disabled");
$(".sbtnvideo").removeAttr("disabled");
$(".sbtnaudio").removeAttr("disabled");
$(".imageClear").on("click", function(event) {
event.preventDefault();
$(this).parents("form:first").find(".fileImage").replaceWith("<input type='file' class='fileImage' name='fileImage' />");
});
var _imagecounter = imagecounter;
$('.listImage').eq(window.lastUploadImageIndex).find(".deletefileimage").on("click", function(event) {
var image_file_name = $(this).attr('image_file_name');
jQuery.ajax("deleteimage.php?imagefilename=" + image_file_name)
.done(function(data) {
$(".imagemsg" + _imagecounter).html(data);
});
$(this).parent().remove();
});
return true;
}
ImageclickHandler()関数:
function imageClickHandler(imageuploadform){
if(imageValidation(imageuploadform)){
window.lastUploadImageIndex = $('.imageuploadform').index(imageuploadform);
return startImageUpload(imageuploadform);
}
return false;
}
アップデート:
以下は、ファイルをアップロードするphpコードです。
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
if ($_FILES['fileImage']['error'] === UPLOAD_ERR_OK) {
$result = 0;
if (getimagesize($_FILES['fileImage']['tmp_name'])) {
if ((($_FILES["fileImage"]["type"] == "image/gif") || ($_FILES["fileImage"]["type"] == "image/jpeg") || ($_FILES["fileImage"]["type"] == "image/pjpeg") || ($_FILES["fileImage"]["type"] == "image/jpg")) && ($_FILES['fileImage']['size'] > 0)) {
if (is_file("ImageFiles/" . $_FILES['fileImage']['name'])) {
$parts = explode(".", $_FILES['fileImage']['name']);
$ext = array_pop($parts);
$base = implode(".", $parts);
$n = 2;
while (is_file("ImageFiles/" . $base . "_" . $n . "." . $ext))
$n++;
$_FILES['fileImage']['name'] = $base . "_" . $n . "." . $ext;
move_uploaded_file($_FILES["fileImage"]["tmp_name"], "ImageFiles/" . $_FILES["fileImage"]["name"]);
$result = 1;
}
else {
move_uploaded_file($_FILES["fileImage"]["tmp_name"], "ImageFiles/" . $_FILES["fileImage"]["name"]);
$result = 1;
}
}
}
} else {
echo "Upload was not successful";
}
?>
<script language="javascript" type="text/javascript">window.top.stopImageUpload(<?php
echo $result;
?>, '<?php
echo $_FILES['fileImage']['name'];
?>');</script>
</body>
</html>
更新2:
iframeロードの現在のコード:
$(imageuploadform).find(".imageCancel").on("click", function(event) {
$('.upload_target_image').get(0).contentwindow;
stopImageUpload(2);
$("iframe[name='upload_target_image']").on("load",function() {
stopImageUpload(1);
}).attr("src", "cancelimage.php");
iframeロードの元のコード:
$(imageuploadform).find(".imageCancel").on("click", function(event) {
$('.upload_target_image').get(0).contentwindow;
$("iframe[name='upload_target_image']").on("load",function() {
stopImageUpload(2);
}).attr("src", "cancelimage.php");
元のコードで発生したのは、ファイルが正常にアップロードされたときに、一瞬で成功== 1メッセージが表示されたが、すぐにキャンセルメッセージである成功-2が表示されたということでした。
これは明らかに間違っていたので、修正を試みるために、現在のコードソリューションを試しました。キャンセルすると、成功== 2メッセージが表示され、ファイルが成功すると、成功==1メッセージが表示されるようになりました。そのメッセージは変わりませんでした。しかし、私が持っているエラーを引き起こしているバーマンのおかげでうまくいったように