我的问题是我上传的图片无需离开页面即可运行,而且一切都成功了。在ajaxForm插件的成功回调中,我改变了图像的src,但它并没有更新。但我知道在达到成功回调时图像已完成上传。我甚至还在为它重新考验。
仍然,我必须重新加载页面才能看到它。当我使用纯JS而没有PHP时,它工作得很好。我尝试了很多不同的重新排列,但仍然没有。我已经尝试使用attr函数来更改src,但我仍然需要重新加载。图像src根据页面源正确更改。
有人可以帮忙吗?为什么我还要重新加载页面?
我的上传表单:
f($whoseprofile == $currentUser->get("username"))
{
echo '<form id = "upform" action="/upload.php" method="post" enctype="multipart/form-data"><label for="uploadpicture"><img class="overlayImage" src="/img/newplus.png"><input type="file" id="uploadpicture" name="picture" /></label></form>';
}
接下来是ajaxForm。
<script type="text/javascript">
$(document).ready(function() {
$('#uploadpicture').change(function() {
$('#upform').ajaxForm({
beforeSubmit: function() {
},
success: function() {
<? php $query = ParseUser::query();
$query - > equalTo("username", $whoseprofile);
$results = $query - > find();
$picurl = $results[0] - > get("profilePicture") - > getUrl(); ?>
$('#profilepic').html("");
$('#profilepic').html("<img id='profilepic' class='profilepic' src='<?php echo $picurl;?>'>");
}
}).submit();
});
});
</script>
这是upload.php
<?php
require 'autoload.php';
$app_id = ;
$rest_key = ;
$master_key = ;
use Parse\ParseClient;
use Parse\ParseObject;
use Parse\ParseQuery;
use Parse\ParseACL;
use Parse\ParsePush;
use Parse\ParseUser;
use Parse\ParseInstallation;
use Parse\ParseException;
use Parse\ParseAnalytics;
use Parse\ParseFile;
use Parse\ParseCloud;
use Parse\ParseRelation;
use Parse\ParseSessionStorage;
session_start();
ParseClient::initialize( $app_id, $rest_key, $master_key );
$currentUser = ParseUser::getCurrentUser();
if ($currentUser) {
$file = ParseFile::createFromData( file_get_contents( $_FILES['picture']['tmp_name'] ), $_FILES['picture']['name'] );
$file->save();
$currentUser->set("profilePicture", $file);
$currentUser->save();
} else {
header("Location: blahlblahblah");
exit();
}
?>