it-swarm-ja.tech

Joomla 3.0 MVCでAJAXを使用して画像をアップロードします

Joomla MVCフレームワークでAJAX jqueryを使用して画像をアップロードしようとしています。

以下は、以下のJavaScriptスクリプトコードを追加するdefault.phpです。

$('#icon-submit').on('click',(function(e) {
e.preventDefault();
var formData = new FormData($(this).closest('form')[0]));
  $.ajax({
    url: "index.php?option=com_jsmdownload&task=imageUpload",
    type: "POST",
    data:  new FormData(formData),
    contentType: false,
    cache: false,
    processData:false,
    success: function(data){
      alert(data);
    },
    error: function(){
    }
  });
}));

以下は、単純なファイルボックスとボタンを含むHTMLコードです。

<form action="<?php echo JRoute::_('index.php'); ?>" method="POST" name="adminForm" id="adminForm" enctype="multipart/form-data">
  <input type="file" id="and_36x36" name="and_36x36">
  <input id='icon-submit' type='button' value='Next ->' />
</form>

以下は、imageUploadタスク用のcontroller.phpのPHPコードです。

function imageUpload(){
  JFactory::getDocument()->setMimeEncoding( 'application/json' );
  print_r($_FILES);
  JFactory::getApplication()->close();
}

ファイルを選択してボタンをクリックすると、PHP関数はまだ呼び出されておらず、以下の出力しか表示されません。

enter image description here

私は何が間違っているのかわかりません。選択したファイルを取得してサーバーにアップロードし、ブラウザーに戻ります。

複数の投稿を参照しましたが、回答が見つかりません。

1つの観察として、Joomla MVCをインポートせずにURLをプレーンなPHPファイルに変更すると、正常に動作し、以下の出力が表示されることがあります。

enter image description here

問題は、コンポーネントビューにリンクすると呼び出されないことだけです。これを修正するにはアドバイスが必要です。

2
Malaiselvan

ページ全体ではなくコンポーネントの出力のみを返すには、AJAX呼び出しのURLに「&tmpl = component」を追加する必要があります。

変化する

url: "index.php?option=com_jsmdownload&task=imageUpload",

url: "index.php?option=com_jsmdownload&task=imageUpload&tmpl=component",

それを試して、それが機能するかどうかを確認してください。

1
fruppel