PHP Jquery图像上载不工作
我试图通过ajax发布表单数据 form1.php 我使用请求获取所有URL参数数据PHP Jquery图像上载不工作,php,jquery,Php,Jquery,我试图通过ajax发布表单数据 form1.php 我使用请求获取所有URL参数数据 $_REQUEST["Ename"]; $_REQUEST["eImg"]; 要上传图像,我使用以下代码 在上面的链接中,您可以看到源代码,它位于$_FILES['photoimg']['name'];,我使用$_文件['image']['name'];但它并没有上传文件并给出成功消息 include('db.php'); session_start(); $session_id='1'; // User s
$_REQUEST["Ename"];
$_REQUEST["eImg"];
要上传图像,我使用以下代码
在上面的链接中,您可以看到源代码,它位于$_FILES['photoimg']['name'];,我使用$_文件['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();
}**
$valid_formats=数组(“jpg”、“png”、“gif”、“bmp”、“jpeg”);
**如果(isset($\u POST)和$\u服务器['REQUEST\u METHOD']=“POST”)
{**
$name=$_文件['image']['name'];
$size=$\u文件['image']['size'];
if(strlen($name)){
列表($txt,$ext)=分解(“.”,$name);
if(在数组中($ext,$valid_格式)){
如果($size,则无法通过上传文件
你必须使用一些trycky iframe之类的东西来完成这项工作。幸运的是,jquery有现成的插件可以帮你处理这个问题(例如,你正在阅读的教程中使用了wich)
编辑:
该插件还允许添加表单本身中不存在的额外数据。引用:
数据
包含应随表单一起提交的额外数据的对象
data: { key1: 'value1', key2: 'value2' }
那不行!
图像的处理方式与Ajax中的文本数据不同,因此您需要做的不仅仅是使用$.Ajax({})方法发布图像
但是,您可以使用jquery.form.js插件,它工作得非常好。有一个关于如何使用它的教程
我自己用过的任何方法,让我为你详细说明
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();
});
$('.uploadForm').live('click',函数(evt){
$('#反馈').html('');
$('#反馈').html('');
$(“#formID”).ajaxForm({
目标:“#反馈”
}).submit();
evt.preventDefault();
});
如果您的PHP代码很好,这应该可以工作。。。。。
只需以正常方式发布表单字段的其余部分
这应该适合你。如果PHP代码是好的
例如,如果您在这样的表单中有其他表单字段,如firstname和lastname
<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代码还可以的话)。我没有仔细阅读过它。对于通过ajax上传图像,你应该使用iframe并将其id设置为form target
请看一看
上传图像的代码非常简单您的javascript与教程中的不同……它们使用.ajaxForm()
而您使用.ajax())
@PhpMyCoder:我自己编写的jquery只使用了他们的PHP上传脚本。这可能就是为什么它不起作用的原因。使用他们的javascript。你的javascript不能正确提交文件。@PhpMyCoder:他们显示预览,我不希望这样,当我回显请求时,我会得到文件名。我的jquery有什么问题script@PhpMyCoder:你能更正我的jquery脚本吗:我的表单中几乎没有其他字段。我在这里提到了如何通过该插件发送数据。他们对表单使用了一个操作,因为这不是“真实的”ajax。你不能通过ajax上传文件。这个插件的作用是将表单提交到一个隐藏的iframe并从那里得到响应,所以它看起来像ajax,但不是。我打算放弃。再说一次:通过ajax上传文件是不可能的。你必须使用另一种解决方案,它在你发布的教程和do中都有明确的描述教程使用的插件说明:你不必担心其他字段,它们会像其他普通表单一样被序列化和正常发布。注意:我不想显示预览,我查看了malsup,我不清楚如何将我的表单字段添加到该脚本中。你能告诉我,我是如何在此处链接中这样做的。这很容易删除p回顾PHP代码,并用一条成功消息替换它:这是提交表单还是通过is ajax提交数据。它将通过ajax提交表单数据和图像…只需遵循本教程并消除预览…>或者只需查看我对第一个答案所做的编辑