我正在尝试通过ajax发布表单数据
表单 1.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();
}**
您根本无法通过$.ajax()
上传文件。
你必须使用一些trycky iframe的东西或类似的东西来使这项工作。 幸运的是,jQuery有现成的插件可以为您处理此问题(例如$.ajaxForm()
似乎是您正在阅读的教程中使用的插件)。
编辑:
该插件还允许添加表单本身不存在的额外数据。引用文档:
数据
包含应与表单一起提交的额外数据的对象。data: { key1: 'value1', key2: 'value2' }
对于通过 ajax 上传图像,您应该使用 iframe 并将其 id 设置为形成目标。
请看一下http://www.coursesweb.net/ajax/upload-images
上传图像的代码非常简单
那行不通!图像的处理方式与 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"/>
<input type="reset" name="reset" id="button" value="Cancel" /></td>
</form>
</fieldset>
<div id="feedback"></div>
</div>
在它下面,你只需要添加一个div或段落来保存你的反馈消息....那么其余的就好了(就像我说的,如果你的PHP代码没问题)我没有看过很多