0

我正在尝试通过 ajax 发布表单数据

form1.php

我使用请求获取所有 URL 参数数据

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

要上传图片,我使用此代码http://www.9lessons.info/2011/08/ajax-image-upload-without-refreshing.html

在上面的链接中,你可以看到源代码,在 $_FILES['photoimg']['name']; 的地方,我使用 $_FILES['image']['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

For upload image by ajax you should use an iframe and set its id to form target.

Please have a look at http://www.coursesweb.net/ajax/upload-images

It is very simple code to upload image

于 2012-06-20T11:02:27.993 回答
1

您根本无法通过$.ajax().

您将不得不使用一些棘手的 iframe-stuff 或类似的东西来完成这项工作。幸运的是,有现成的 jquery 插件可以为您处理这个问题($.ajaxForm()例如,这似乎是您正在阅读的教程中使用的插件)。

编辑:
该插件还允许添加表单本身不存在的额外数据。引用文档

data
一个包含额外数据的对象,应该与表单一起提交。

data: { key1: 'value1', key2: 'value2' }
于 2012-06-20T10:01:46.487 回答
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 回答