0

input type="file" を使用して画像をアップロードしたいのですが、JQuery serialize() メソッドを使用してフォームをシリアライズすると、PHP ページで $_FILES を使用してファイル名やその他のプロパティを取得できません。

<script type="text/javascript" src="AddNews.js"></script>

<form id="myForm" method="post" action="#" enctype="multipart/form-data" onsubmit="return false;">
   <div class="innerContainer">
      <table border="0" cellspacing="0" cellpadding="7" width="92%" align="center">
      <tbody>
      <tr>
          <td class="registerForm">Title:</td>
          <td><input type="text" id="title" name="title" size="35" /></td>
      </tr>    
      <tr>
          <td class="registerForm">Image Path:</td>
          <td><input type="file" id="file" name="file" /></td>
      </tr>
      <tr>
          <td class="registerForm">Content:</td>
          <td><textarea cols="35" rows="7" id="content" name="content"></textarea></td>
      </tr>
      </tbody>
      </table>
      <div id="submitButton">
          <input name="submit" type="submit" value="Add News" />
      </div>
   </div>
</form>

以下のコードは、「AddNews.js」ファイルの Javascript コードです。

$(document).ready(function() {
    $('input[name="submit"]').click(function() {
       if ($("#title").val().length == 0) {
           alert('Please Enter News Title ');
           return false;
       } 

       var formData = $("#myForm").serialize();
       $.post('AddFormLogic.php', formData, function(response) {

       }, 'json');
    });
});

/*PHP Code of AddFormLogic.php */
if ($_FILES["file"]["error"] > 0) {
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
} else {
  echo "Upload: " . $_FILES["file"]["name"] . "<br>";
  echo "Type: " . $_FILES["file"]["type"] . "<br>";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
}

PHP ページの $_FILES["file"]["error"] にアクセスできません。未定義のインデックス エラーです。

誰かが私を助けることができますか?

4

1 に答える 1

0

JQuery はフォーム データをシリアライズする input[type=file] を送信しません。html5 クラスを使用できますFormData。試す:

var formData = new FormData($("#myForm").[0]);

ただし、これは html5 をサポートするブラウザーでのみ機能します。

于 2013-08-29T10:37:17.187 に答える