0

エラーコンソールで以下のエラーを受け取りましたが、問題が発生しているビューソースに表示されません。

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メッセージが表示されるようになりました。そのメッセージは変わりませんでした。しかし、私が持っているエラーを引き起こしているバーマンのおかげでうまくいったように

4

3 に答える 3

1

その理由は、stopImageUpload()2つの引数が必要ですが、指定しているのは1つの引数だけだからです。2番目の引数はファイル名であると想定されています。次に、を呼び出すhtmlEncode(imagefilename)この未定義のファイル名引数を使用して呼び出します$('<div/>').text(undefined).html()$('<div/>').text(undefined)jQueryでは、がそうであるかのように扱われる$('<div/>').text()ため、文字列を返します""。次に、を呼び出そうとしますが"".html()、これは無効です。

修正は、filename引数を関数に渡すことです。ただし、ファイル名をどこから取得できるかわからないため、ファイル名をDIVに入れようとするコードを削除する必要があると思います。

于 2012-12-30T07:34:42.070 に答える
0

.text()文字列を返します。メソッドはありません.html()

そして、エラーは投稿されたピースコードからではなく、おそらくにありstopImageUploadます。

于 2012-12-30T04:52:11.677 に答える
0

交換するだけです:

return $('<div/>').text(value).html();

と:

return $('<div/>').text(value).end().html();

または

$('<div/>').text(value);
return value;

更新:元のスクリプトは機能します:

フィドル: http: //jsfiddle.net/z6VzH/

于 2012-12-30T05:51:20.547 に答える