Php ajax未将文件pic上载到数据库和服务器
我的问题是,由于某种原因,当我使用ajax submit时,我的脚本没有将pic上传到serv并插入数据库。如果我用php action=file.php提交表单,它就会工作。这是我的ajax脚本和php脚本,我不知道问题出在哪里,也不知道为什么它使用php提交而不使用ajax。提前通知我Php ajax未将文件pic上载到数据库和服务器,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我的问题是,由于某种原因,当我使用ajax submit时,我的脚本没有将pic上传到serv并插入数据库。如果我用php action=file.php提交表单,它就会工作。这是我的ajax脚本和php脚本,我不知道问题出在哪里,也不知道为什么它使用php提交而不使用ajax。提前通知我 <script> $(function() { //twitter bootstrap script $("button#submit").click(function(){
<script>
$(function() {
//twitter bootstrap script
$("button#submit").click(function(){
$.ajax({
type: "POST",
url: "engine/app/process.php",
data: $(\'form.edit\').serialize(),
dataType:\'json\',
success: function(data){
$("#bday").html(data.a)
$("#locatie").html(data.b)
$("#descriere").html(data.c)
$("#interes").html(data.d)
$("#status").html(data.e)
$(".img").html(data.f)
$("#myModal").modal(\'hide\');
},
error: function(){
alert("failure");
}
});
});
});
</script>
php脚本
<?php
require_once('../core/dbconfig.php');
$dbc = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASS, DB_NAME);
$nume=$_POST['nume'];
$bday=$_POST['bday'];
$locatie=$_POST['locatie'];
$status=$_POST['status'];
$interese=$_POST['interese'];
$despre=$_POST['descriere'];
$id_user=$_POST['id_user'];
$query="Update `users` SET username='$nume',bday='$bday',Locatie='$locatie',Relatie='$status',Interese='$interese',Descriere='$despre' where id='$id_user' ";
$result=mysqli_query($dbc,$query) or die("query failed: " . mysqli_error($dbc));
$path = '../../images/users/'.$id_user.'/';
if(!is_dir($path)){
mkdir($path,0755);
}
$valid_formats = array("jpg", "png", "gif", "bmp", "jpeg", "JPG");
$name = $_FILES['img1']['name'];
$size = $_FILES['img1']['size'];
if(strlen($name))
{
list($txt, $ext) = explode(".", $name);
if(in_array($ext,$valid_formats))
{
if($size<(1024*1024))
{
/*$actual_image_name = time().substr(str_replace(" ", "_", $txt), 5).".".$ext;*/
$actual_image_name=$id_user.'.'.$ext;
$tmp = $_FILES['img1']['tmp_name'];
if(move_uploaded_file($tmp, $path.$actual_image_name))
{
$queryz="Insert into Galerie (ID_User,Poza,Poza_Profil) VALUES ('$id_user','$actual_image_name',1)";
$resultz=mysqli_query($dbc,$queryz) or die("query failed: " . mysqli_error($dbc));
}
else
echo "failed";
}
else
echo "Image file size max 1 MB";
}
else
echo "Invalid file format..";
}
echo json_encode(array("a" => $bday, "b" => $locatie,"c" => $despre,"d" => $interese,"e" => $name,"f" => ""));
?>
如果只有Ajax请求,则无法将文件上载到服务器。更好的选择是使用 此链接还包括一些示例代码,按照文档进行操作并实现所需的功能
看看如何实现jQuery表单插件,在上,serialize方法将表单字段数据放入一个字符串中,该字符串符合用于将表单提交到服务器进行处理的应用程序/x-www-Form-urlencoded内容类型,而文件是以多部分/表单数据内容类型编码的请求提交的,因此,序列化忽略文件输入 您应该使用formData
var form = new FormData(document.getElementById('your_frm_id'));
var file = document.getElementById('img1').files[0];
if (file) {
$('#sent_progress').show();
form.append('img1', file);
}
在ajax中的使用
data: form,
在这里阅读更多
或者你可以使用一些Jquery插件来上传你的表单文件
希望它能有所帮助简单的ajax功能不适用于文件上传。更多信息,请参阅类似的帖子。Thnx,我又添加了一个用于上传图像的脚本。不能修改我的,我不太擅长ajax,我也想保持json返回。但是它也可以使用2个脚本,所以thnx需要帮助:$document.readyfunction{$imageform.ajaxForm{target:\'preview\'}@我可以知道为什么在这里投反对票吗?thnx,这是一个很好的信息,但我不能修改我的脚本,我只是为上传图片制作了一个新的脚本。因此,实际上,在1次提交时,我调用了2个函数,一个用于正常信息,一个用于上传: