我正在使用html表单将文件上传到我的服务器。我想在表单提交并且文件成功上传后才执行javascript函数。如果文件上传有效,表单将打开一个新页面,其中包含“上传成功”文本。我尝试使用while循环,它将循环,直到在数据库中找到该文件但它崩溃了我的浏览器。我怎样才能做到这一点?我正在使用myform.submit()来提交我的表单。
答案 0 :(得分:2)
如果帖子运行良好,并且在刷新页面内容之前保存文件,这很容易。在发布周期准备好之前,页面不会返回,因此您可以在保存文件后将javascript代码插入页面。
答案 1 :(得分:1)
您可以使用AJAX上传您的文件,并使用异步返回功能(这是一个将在您的请求完成后触发的事件)以通过您的php来确认成功或失败的消息。
编辑:
这是一个你可以使用的ajax函数,只需在extenal文件中加载:
var ajax = function(data){
// Return false is no url... You need an url to get url data..
if(typeof data.url !== 'undefined'){
var url = data.url;
// Adept the function depending on your method
if(data.method === 'GET' && data.params !== 'undefined'){
url+='?'+data.params;
}
}else{
return(false);}
var // Set some vars 'n' stuff
method = ( data.method === 'GET') ? 'GET' : 'POST',
params = (typeof data.params !== 'undefined') ? data.params : null,
async = ( data.async === true) ? true : false,
done = (typeof data.done === 'function') ? data.done : false,
return_value = null,
length = (data.method === 'POST') ? data.method.length : '';
var // Find out what ajax methods the browser support
request_method = function(){
var xmlhttp = false;
try {
xmlhttp = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
xmlhttp = false;
}
}
}
return xmlhttp;
}// This thing connet to the server
connect = function(){
if(request = request_method()){}else{
return(false);
}
request.open(method, url, async);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", length);
request.setRequestHeader("Connection", "close");
request.send(params);
request_handle(request);
},// This is where the result get processed
request_handle = function(request){
if(async){
request.onreadystatechange = function() {
if(request.readyState === 4 && request.status === 200) {
done(data);
}
}
}else{
done(data);
}
};
connect();
return(return_value);
}
用法:
ajax({
url: 'test.php',
//// Your ajax request url // no default // Must be set!
method: 'POST',
//// Method of sending ajax data // default is POST
async: true,
//// What to do when done with the request // no default
done: function(http){
table(http,'test');
}
});
答案 2 :(得分:1)
你可以做的一件简单的事情
使用executioncalar插入文件返回布尔值后立即插入上传文件以检查是否插入,如果是,则设置hiddenfield值。在javascript中检查隐藏字段的值,并根据您可以调用您的javascript函数