0

こんにちは、サーバーに画像をアップロードしたいと思います。ajax.load を使用してページを別のページにロードしていないときに機能します。したがって、それへの直接リンクを使用すると、正常に機能します。しかし、リンクをクリックし、アップロード フォームを開き、画像をアップロードしたいと思います (すべて 1 つのウィンドウで)。これは、アップロード前にページが更新されているためですか、それとも別の問題ですか? これを解決する方法がわかりません。

コード:

<?php
include('includes/connect.php');

if(isset($_POST['uploadImg'])){
$extension = end(explode(".", $_FILES["file"]["name"]));
$name = $_FILES["file"]["name"];

if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
     mysql_query("INSERT INTO images (itemID,imgPath,imgName,imgExtension,imgAlt)               VALUES (".$_POST['itemNumber'].",'upload','".$name."','".$extension."','".$name."')")or die('kan niet uploaden'.mysql_error()); 
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Uw afbeelding is toegevoegd aan item".$_POST['itemNumber'];
      echo "<a id='uploadNew' href='#'>Nog een item uploaden</a>";
      }                 


mysql_query("INSERT INTO images (itemID,imgPath,imgName,imgExtension,imgAlt)                VALUES (".$_POST['itemNumber'].",'upload','".$name."','".$extension."','".$name."')")or die('kan niet uploaden'.mysql_error());     
}

?>
<form method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
Toevoegen aan: 
<select name="itemNumber">
<? 
            $result = mysql_query("SELECT * FROM items");
                while($row = mysql_fetch_array($result))
                  {
                      echo '<option name="itemVal" value="'.$row['itemID'].'">'.$row['itemTitle'].'</option>';
                      echo "<br />";
                  }
        ?>
</select>
<input type="submit" name="uploadImg" value="submit" />
</form>
4

2 に答える 2

0

この問題は、AJAX が読み込まれる前にフォームが親ページに送信されるという事実から発生します。投稿した部分ページは、2 番目の HTTP 要求によって取得され、POST パラメーターが設定されていません。

あなたの最善の策は、AJAX が読み込まれる親ページに php スクリプトを追加することです。また、フォーム要素に「ターゲット」属性を指定して、どのサーバー ページがリクエストを処理しているかを追跡します。

于 2012-10-09T12:23:46.340 に答える
0

ajax は画像を直接アップロードしないため、プラグインを使用して画像をアップロードする必要があります。

以前、このプラグイン (ajax.form) を使用して画像をインスタント アップロードしました。

リンクをたどってください。このリンクでは、このプラグインを使用して画像をアップロードする方法の簡単な例.. http://blog.webtech11.com/2012/03/18/ajax-based-instant-image-upload.html

于 2012-10-09T12:26:21.033 に答える