0

$_FILES を使用してイメージ名を取得しようとすると、このメッセージが表示されます。

注意: 未定義のインデックス: C:\xampp\htdocs\upload_form\upload_query.phpの10行目の画像

画像に関する情報を mysql データベース (phpmyadmin) にアップロードするフォームがあり、JavaScript を使用してフォームをクリアし、ユーザーが別の画像と情報をアップロードできるようにします。JavaScript と同様に $_FILES を使用できないことを読みましたが、その理由がわかりません。解決策もありがたいです。

私はphpとJavaScriptが初めてです。

これが JavaScript です。

$('form').on('submit',function() {
var that= $(this),
    url = that.attr('action'),
    type = that.attr('method'),
    data = {};

    that.find('[name]').each(function(index,value) {
           var that = $(this),
           name = that.attr('name'),
           value = that.val();

           data[name] = value;
    });

 $.ajax({
         url: url,
         type: type, 
         data: data,
         success: function(response){
                  console.log(response);
         }
 });
  document.getElementById("upload_form").reset();
return false;
});

これがphpです。

 //image properties
 $name   = $_FILES['image']['name'];
 $size   = $_FILES['image']['size'];
 $temp   = $_FILES['image']['tmp_name'];
 $error  = $_FILES['image']['error'];
 $type   = $_FILES['image']['type'];
 //****************

これはフォームの一部です。

<form action='upload_query.php' class='appnitro' enctype='multipart/form-data' id='upload_form' method='post' name='upload_form'>
  <ul>
    <li id='li_1'>
      <label class='description' for='image'>Upload a Picture</label>    
      <div>
        <input class='element file' id='image' name='image' required="" type='file'>
      </div>
    </li>    
    <li id='li_2'><label class='description' for='name'>Name</label> <span><input class='element text' id='first_name' maxlength='255' name='first_name' placeholder='First Name.' required="" size='12' value=''></span> <span><input class='element text' id='last_name' maxlength='255' name='last_name' placeholder='Last Name.' required="" size='18' value=''></span></li>
  </ul>
</form>

4

2 に答える 2

3

$.ajaxはい、ここを使用してファイルをアップロードできます。方法は次のとおりです

まず、id を持つ典型的なフォームを作成しましょう。このフォームには、必要に応じて 1 つまたは複数のファイルを含めることができます。

<form id='fileupload' method='post' enctype="multipart/form-data" ...

次に、jQuery で次のようにします。

$('#btnupload').click(function () {
    //the key is FormData object
    var formData = new FormData(document.getElementById('fileupload'));
    $.ajax({
        url: 'upload.php', //server script to process data
        type: 'POST',
        success: function (json) {}
        data: formData,
        dataType: "json",
        cache: false,
        contentType: false,
        processData: false
    });
});

ここで重要なのは、javascript のFormDataオブジェクトを使用して、次のデータ パラメータを作成することです。$.ajax

于 2013-07-11T13:06:41.207 に答える
-1

AJAX を使用してファイルを送信することはできません (この方法ではありません)。

ファイルを送信したい場合は、XMLHttpRequest2 をご覧ください。かなり良いチュートリアルはこちら - http://www.html5rocks.com/en/tutorials/file/xhr2/

于 2013-07-11T13:01:21.603 に答える