0

ajaxを介してフォームデータを投稿しようとしています

form1.php

request を使用してすべての URL パラメータ データを取得します

$_REQUEST["Ename"];
$_REQUEST["eImg"];

画像をアップロードするには、このコードhttp://www.9lessons.info/2011/08/ajax-image-upload-without-refreshing.htmlを使用します

上記のリンクでは、$_FILES['photoimg']['name']; の代わりにソース コードを確認できます。ただし、ファイルをアップロードして成功メッセージを表示することはありません。

include('db.php');
session_start();
$session_id='1'; // User session id
$path = "uploads/";

** でマークされたスクリプトを削除しました

$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");
    **if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
    {**

$name = $_FILES['image']['name'];
$size = $_FILES['image']['size'];
if(strlen($name)) {
  list($txt, $ext) = explode(".", $name);
  if(in_array($ext,$valid_formats)) {
    if($size<(1024*1024)) { // Image size max 1 Mb
      $actual_image_name = time().$session_id.".".$ext;
      $tmp = $_FILES['image']['tmp_name'];
      if(move_uploaded_file($tmp, $path.$actual_image_name)) {
        mysql_query("UPDATE users SET profile_image='$actual_image_name' WHERE uid='$session_id'");
        echo "<img src='uploads/".$actual_image_name."' class='preview'>";
      } else {
        echo "failed";
      } 
    } else {
      echo "Image file size max 1 MB";
    }
  } else {
    echo "Invalid file format.."; 
  }
}  **else {
  echo "Please select image..!";
  exit();
}**
4

3 に答える 3

1

経由でファイルをアップロードすることはできません$.ajax()

これを機能させるには、トリッキーな iframe-stuff などを使用する必要があります。幸いなことに、jquery がこれを処理するためのすぐに使用できるプラグインがあります ($.ajaxForm()たとえば、あなたが読んでいるチュートリアルで使用されているもののようです)。

編集:
プラグインは、フォーム自体に存在しない余分なデータを追加することもできます。ドキュメントを引用するには:

data
フォームとともに送信する必要がある追加データを含むオブジェクト。

data: { key1: 'value1', key2: 'value2' }
于 2012-06-20T10:01:46.487 に答える
1

ajax で画像をアップロードするには、iframe を使用し、その ID をフォーム ターゲットに設定する必要があります。

http://www.coursesweb.net/ajax/upload-imagesを ご覧ください。

画像をアップロードするのは非常に簡単なコードです

于 2012-06-20T11:02:27.993 に答える
0

それはうまくいきません!画像は Ajax のテキスト データとは異なる方法で処理されるため、$.ajax({}) メソッドを使用して投稿するだけでは不十分です。

ただし、jquery.form.js プラグインを使用することはできます。完全に動作しますhttp://jquery.malsup.com/form/#download使用方法に関するチュートリアルが ここにあります

私がそれを自分で使用した方法があるので、詳しく説明させてください。

JavaScriptコードはこちら

$('.uploadForm').live('click', function(evt){   
     $('#feedback').html(' ');
     $('#feedback').html('<img src="images/loader_image.gif" alt="Uploading...."/>');
     $("#formID").ajaxForm({
           target: '#feedback'
           }).submit();
    evt.preventDefault();   
 });

PHP コードに問題がなければ、これでうまくいくはずです。残りのフォーム フィールドを通常の方法で投稿するだけです。これでうまくいくはずです。PHPコードに問題がない場合

たとえば、このようなフォームに名字や姓などの他のフォーム フィールドがあるとします。

<div class="form">
 <fieldset class="ui-corner-all">
   <h3 class="ui-widget-header ui-corner-top" align="center">Client information</h3>
     <form action="save_new_client.php" enctype="multipart/form-data" id="clientForm" method="POST">
     <label>First Name</label>

      <input name="firstname" type="text" id="firstname" class="required" minlength="3"/>
      <label>Lastname</label>
      <input name="date_added" type="text" id="date_added" class="dateEst" />
       <label>Image</label>
       <input name="photo" type="file" id="photo" />

      <input type="submit" name="button" id="button" value="Save" class="uploadForm"/>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input type="reset" name="reset" id="button" value="Cancel" /></td>
   </form>
 </fieldset>
<div id="feedback"></div>
</div>

その下に、フィードバック メッセージを保持するための div またはパラグラフを追加するだけで済みます。残りは問題ありません (PHP コードに問題がない場合は前述のとおりです)。あまり詳しく調べていません。

于 2012-06-20T10:06:23.983 に答える