Javascript 使用基于ajax的客户端上载PHP文件不起作用

Javascript 使用基于ajax的客户端上载PHP文件不起作用,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我有一个表单可以将图像上传到某个路径。我在提交表单时没有使用它,而是使用ajax提交表单。数据已成功保存在数据库中,包括文件名,但图像根本没有上载。这有什么问题?我怎么能修好这个?谢谢你的帮助。这是我的密码: form.php <form method="post" name="new_category" id="product_category" enctype="multipart/form-data"> <ul class="add_prod"> <l

我有一个表单可以将图像上传到某个路径。我在提交表单时没有使用它,而是使用ajax提交表单。数据已成功保存在数据库中,包括文件名,但图像根本没有上载。这有什么问题?我怎么能修好这个?谢谢你的帮助。这是我的密码:

form.php

 <form method="post" name="new_category" id="product_category" enctype="multipart/form-data"> 
 <ul class="add_prod">
 <li>Category Title:<input type="text" name="category[title]" id="cat_title" value="" placeholder="Title" /> </li>
 <li>Category Description:<textarea rows="4" cols="40" name="category[description]"></textarea></li>
 <li>Category Image:<input type="file" name="image_file" id="cat_image" /></li>
 </ul>  
 </form>
Save.php

<?php 
//establish connection
$con = mysqli_connect("localhost","root","","database"); 
//on connection failure, throw an error
if(!$con) {  
die('Could not connect: '.mysql_error()); 
} 

$folder = "../Dropbox/estacio/wp-content/plugins/product_form/img/";

if (is_uploaded_file($_POST['image_file']['tmp_name']))  {   
if (move_uploaded_file($_POST['image_file']['tmp_name'], $folder.$_POST['image_file']['name'])) {
     echo "File uploaded";
  } else {
     echo "File not moved to destination folder. Check permissions";
   }
  } else {
  echo "File is not uploaded.";
 } 



   //get the form elements and store them in variables
   $category_values = $_POST["category"]; 
   $image_url = basename($_POST["image_file"]);
   $image_field = "image_url";
   $data = array();

   //unset($view_all_info['Password2']);
   foreach($category_values as $field => $val){
    $data[] = "`".$field."` = '".$val."'";
   }

   array_push($data,"`".$image_field."` = '".$image_url."'");

   $sql = "INSERT INTO wp_product_category SET ".implode(',', $data);
   $ret = mysqli_query($con,$sql); 

   if($ret){
    $notification="Success";
   }
else{
  $notification="Failed";
   }

  echo json_encode(array('notify'=>$notification));

  mysqli_close($con);
 ?>

请尝试检查$\u文件['image\u file']['tmp\u name']或$\u文件['cat\u file']['tmp\u name']而不是$\u POST,POST只提供参数传递的文件名,而不是实际上载的内容

还可以尝试将action='category\u save.php'添加到表单中,并改用ajaxForm

$("#product_category").ajaxForm(
{
dataType:'json',
success:function(json){
   console.log('success');
}
}).submit();

在输入表单中使用不同的id和名称标记也不是很明智。

您需要使用XHR2,它只在最强大的浏览器和最新的IE中可用。在ajax中传递文件名,但是我很确定你仍然需要访问存储在$\u FILES superglobal而不是$\u POST中的文件数据。你能给我看一下你的代码吗?感谢您的帮助查看您尝试使用的php功能将是一个很好的起点。php.net上的参考有一个很好的使用示例。我试图扭转它,但仍然没有上传文件。我的ajax中有什么需要更改的吗?请帮助
$("#product_category").ajaxForm(
{
dataType:'json',
success:function(json){
   console.log('success');
}
}).submit();