如何通过ajax formdata处理数据后插入数据库

时间:2014-05-27 04:38:48

标签: ajax multipartform-data sql-insert form-data

我的目标是使用formdata上传文件并使用ajax将数据插入数据库表。我可以分开做两件事。或者至少,我可以使用formdata上传文件,我可以使用ajax将数据插入到数据库中,但是将它放在一起已经证明是困难的。这段代码的教程似乎表明它会这样做,根据我的理解,ajax正在处理整个表单,但它只是上传文件。我没有遇到任何问题,不幸的是,这就是我发现的大多数问题和教程似乎都是针对的。

我认为问题在于我的php插入代码。我应该以不同的方式插入,因为数据是如何通过ajax传递的?或者我比这更迷失,只是觉得我通过ajax传递了它?我觉得我现在离这么近,但我无法弄清楚我做错了什么。

感谢您的帮助。

表格和ajax:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>

<form name="multiform" id="multiform" action="upload.php" method="POST" enctype="multipart/form-data">
Name: <input type="text" name="dname" /> <br/>
Age :<input type="text" name="age"  /> <br/>
Image :<input type="file" name="photo" /><br/>
<input type="submit" value="Ajax File Upload" />
</form>

<script>
//Callback handler for form submit event
jQuery(document).ready(function() {
$("#multiform").submit(function(e)
{

var formObj = $(this);
var formURL = formObj.attr("action");
var formData = new FormData($(this)[0]);
$.ajax({
    url: formURL,
type: 'POST',
    data:  formData,
mimeType:"multipart/form-data",
contentType: false,
    cache: false,
    processData:false,
success: function(data, textStatus, jqXHR)
{ alert(data)

},
 error: function(jqXHR, textStatus, errorThrown) 
 {
 }          
});
e.preventDefault(); //Prevent Default action. 

});  
$("#multiform").submit(); //Submit the form
});
</script>

php:

<?php

$username="...";
$password="...";
$database="...";

$target = "...";
$target = $target . time() . '_' . basename( $_FILES['photo']['name']);
$File = time() . '_' . basename($_FILES['photo']['name']);


$name = $_POST['dname'];
$age = $_POST['age'];
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Death");

print_r($_POST);
print_r($_FILES);

mysql_query("INSERT INTO wp_demo('name','age','File')VALUES('$name','$age','$File')");

if(isset($_FILES["photo"]))
{
//Filter the file types , if you want.
if ($_FILES["photo"]["error"] > 0)
{
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
    //move the uploaded file to uploads folder;
    move_uploaded_file($_FILES["photo"]["tmp_name"],$target);

 echo $_FILES['photo']['name'] . " is now available";
}

}

?>
编辑:没关系。我仍然不知道这里有什么问题,但它最终只需要在wordpress中工作。我让它在那里工作:

global $wpdb;
if($wpdb->insert('wp_demo',array(
    'name' => $name,
'age' => $age,
'File' => $File
))===FALSE) {
echo "error";
}
else {
echo "success";
}

现在我只需要弄清楚它在页面加载时提交的原因......

0 个答案:

没有答案