2016-11-27 76 views
0

你好,我有以下AJAX代码:jquery和AJAX发布到php数据属性?

var formData = new FormData($('form')[0]); 
$.ajax({ 
    url: 'saveImage.php', //Server script to process data 
    type: 'POST', 
    data: formData, 
    processData: false, 
    success: function(data){ 
     console.log(data);    
    } 

}); 

它的伟大工程,它加载了PHP页面它的背景像它应该:

<?php 
     include_once "mysql_connect.php"; 
     $imageName = mysql_real_escape_string($_FILES["Image1"]["name"]); 
     $imageData = ''; 
     $imageext = ''; 
     if($imageName != null){ 
      $imageData = mysql_real_escape_string(file_get_contents($_FILES["Image1"]["tmp_name"])); 
      $imageType = mysql_real_escape_string($_FILES["Image1"]["type"]); 
      $imageSize = getimagesize($_FILES["Image1"]["tmp_name"]); 
      $imageType = mysql_real_escape_string($_FILES["Image1"]["type"]); 
      $FileSize = FileSize($_FILES["Image1"]["tmp_name"]); 
      $imageext = mysql_real_escape_string($imageSize['mime']); 
     } 
     $query=mysql_query("INSERT INTO pictures (`id`, `imagedata`, `imageext`) VALUES ('', '$imageData', '$imageext');"); 


     echo $imageext; 


?> 

唯一的问题是,PHP页面斜面找到变量Image1,它是表单中输入的名称。我做错了什么吗?我在想,也许在阿贾克斯的数据参数,它会是这样的,但正确的:

data: "Image1"=formData, 

是这样一个东西,如果不是,为什么不能我的PHP看到输入字段?

+0

我们可以看到您的HTML表单吗? – winseybash

+0

作为一个调试步骤,尝试向您的PHP添加'print_r($ _ POST);'和'print_r($ _ FILES);'以便您可以准确了解数据正在发送的内容以及正在使用的名称。 – Joe

+0

@Joe它给了我
注意:未定义指数:在此搜索C:\ XAMPP \ htdocs中\网站\ saveImage.php上线
阵列 ( ) – Jelly

回答

0

您忘记了Ajax函数中的cache和contentType属性。尝试它应该工作:

var formData = new FormData($('form')[0]); 
$.ajax({ 
    type: "POST",     
    url: "saveImage.php", 
    processData: false, 
    contentType: false, 
    cache:false, 
    data: formData, 
    success: function(data){ 
     console.log(data); 
    } 
}); 
+0

没有工作对不起 – Jelly

+0

NVM它确实有效 – Jelly