使用javascript检查html表单的结果

时间:2011-05-23 07:47:58

标签: javascript html forms

我正在使用html表单将文件上传到我的服务器。我想在表单提交并且文件成功上传后才执行javascript函数。如果文件上传有效,表单将打开一个新页面,其中包含“上传成功”文本。我尝试使用while循环,它将循环,直到在数据库中找到该文件但它崩溃了我的浏览器。我怎样才能做到这一点?我正在使用myform.submit()来提交我的表单。

3 个答案:

答案 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函数