Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Jquery图像上载不工作_Php_Jquery - Fatal编程技术网

PHP Jquery图像上载不工作

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

我试图通过ajax发布表单数据

form1.php

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

$_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"/>
    &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代码还可以的话)。我没有仔细阅读过它。对于通过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提交表单数据和图像…只需遵循本教程并消除预览…>或者只需查看我对第一个答案所做的编辑