2015-09-17 3 views
2

Я использую загрузку файлов с php с использованием jQuery ajax method. Я получил загрузку файлов, отправив форму при нажатии на кнопку, но она не работает для события onchange при вводе поле - это изменение. Вот код, я использую,jquery onchange событие не работает для загрузки файлов в php

<div id="photo"> 
<img id="image" src="<?php echo $uploadedfile;?>" width=100% height=100%> 
</div> 
<form id="myform" method="post" enctype="multipart/form-data"> 
<div id="pick">Change Photo 
<input type="file" name="files" id="upload"> 
</div> 
<input type="submit" value="send" name="submit"> 
</form> 

JQuery используется

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script> 

$("form#myform").submit(function(event){ 

event.preventDefault(); 

var formData = new FormData($(this)[0]); 

$.ajax({ 

url : "main.php", 
type: 'POST', 
datatype : "JSON", 
data: formData, 
async: false, 
cache: false, 
contentType: false, 
processData: false, 
success: function (returndata) { 

    $("#image").attr({ 
     'src' : returndata.uploadedfile 
}); 

} 
}); 
return false; 

}); 

</script> 

PHP код здесь

<?php 
$uploadedfile = "default.jpg"; 
if(isset($_POST['submit'])){ 

if(isset($_FILES["files"]["name"])){ 


$filename = $_FILES["files"]["name"]; 
$tmppath = $_FILES["files"]["tmp_name"]; 
$ext = pathinfo($filename,PATHINFO_EXTENSION); 

$targetfile = "uploads/".basename($filename); 

if($_FILES["files"]["size"] > 0) 
{ 

if($ext == "jpg") 
{ 
if(file_exists($targetfile)){ 

$uploadok = false; 
$error = "file already exists"; 
} 
else { 

$uploadok = true; 
} 
} 
else 
{ 

$uploadok = false; 
$error = "only jpg format is allowed"; 
} 
} 
else { 
$uploadok = false; 
$error = "filesize is too short"; 
} 
if($uploadok == true){ 
move_uploaded_file($tmppath,$targetfile); 

$uploadedfile = $targetfile; 
$error = "no errors!"; 
}else{ 
$uploadedfile = "default.jpg"; 
} 
header("Content-type: text/x-json"); 
$data = array('error'=>$error, 'uploadedfile'=>$uploadedfile); 

echo json_encode($data); 
exit(); 
} 
} 
?> 

Я хочу добиться этого на изменение только не нажав на . Есть идеи ??

+0

Вы пробовали '$ ("# загрузки") на ("изменение", функция (е) {... ваш. обработчик ...}) '? Также nitpick: '$ (this) [0] === this' – tcooc

+0

Да, попробовал изменения, но что такое nitpick? @tcooc –

ответ

1

Изменить это:

$("form#myform").submit(function (event) 

к этому:

$("form#myform").change(function (event) 
+0

пытался, но ничего не произошло. :(@CodeGodie –

+0

какой браузер вы используете? Когда вы говорите _ «Я хочу добиться этого только при изменении, а не нажатием» _ вы имеете в виду, что функция должна быть запущена при выборе изображения? – CodeGodie

+0

при изменении ввода поле, событие должно быть уволено, потому что должно быть отправлено. –

Смежные вопросы