我不知道为什么我收到未定义索引的错误。我想我正确地将值发送到php。或者我在代码中遗漏了什么?
这是我使用的jquery代码:
$(function() {
$('button').button();
$('.update-profile-pic').click(function() {
$('#dialog').dialog({
width:350,
modal:true,
buttons: {
'Upload': function() {
$.ajax({
url: 'upload-image.php',
method: 'post',
data: { uploadedfile: $('.profile-pic-name').val().trim() },
success: function(data) {
$('.new-profile-pic').html(data);
}
});
}
}
});
});
});
这是我的HTML代码:
<button class="update-profile-pic">Update Profile Picture</button>
<div id="dialog">
<p class="new-profile-pic">
<!--Image should be here-->
</p>
<form enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input class="profile-pic-name" name="uploadedfile" type="file">
</form>
<div>
这是我的PHP代码:
<?php
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo '<img alt="" src="'.$target_path.'">';
} else{
echo "There was an error uploading the file, please try again!";
}
?>
点击上传后,这是firebug控制台的结果:
以下是示例错误输出:
答案 0 :(得分:2)
您可以尝试以下
success: function(data) {
$('.new-profile-pic').html(data.uploadedfile);
}
您是否检查过以下内容与您正在寻找的内容类似
http://www.9lessons.info/2011/08/ajax-image-upload-without-refreshing.html
答案 1 :(得分:1)
我可能错了,但由于您使用的是Ajax,我认为您的PHP代码不会在$_FILE
全局中查找该文件。相反,数据将在$_POST
全局(它将是JSON,因此您必须首先json_decode()
。尽管如此,所有这些都是文件的名称,而不是实际的文件。您需要在JavaScript文件中创建一个新的FormData
对象,并将其传递给文件输入。
答案 2 :(得分:1)
这不起作用的原因是因为您无法通过AJAX发送文件。您需要使用插件或隐藏的iFrame。请参阅http://ramui.com/articles/ajax-file-upload-using-iframe.html。
答案 3 :(得分:0)
你可以使用这个或许多其他可用于通过互联网上传ajax文件