繁体   English   中英

提交前的asp.net按钮客户端确认

[英]asp.net button client side confirmation before submit

我有这个问题:我需要验证文件是否尚未上传,为此我将Web服务与isAlreadyUploaded()调用的Jquery一起使用,该服务返回true或false。 如果文件存在,则要求进行确认。 然后,一旦完成,我想调用Button1_Click函数完成操作。 我的问题是两个都同时被调用,从而避免了确认。

也许我以错误的方式来解决问题。 如果是这样,请随时纠正我。

<asp:Button ID="Button1" runat="server" Text="Upload" onclick="Button1_Click" OnClientClick="return isAlreadyUploaded()" />

<script>
function isAlreadyUploaded() {

    var mystring = "";

    $.ajax({
        type: "POST",
        url: "Main.aspx/alreadyUploaded",
        data: "{'swfFile':'" + $("#<%=FileUpload2.ClientID%>").val() + "','flvFile':'" + $("#<%=FileUpload3.ClientID%>").val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {

            mystring = msg.d;
            alert(mystring);
            if (mystring != "") {

                if (confirm(mystring)) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return true;
            }
        }
    });        
}
</script>

如果添加以下选项,它应该可以工作:

$.ajax({
    /* ... code ...*/
    async : false,
    /* ... code ...*/
});

当您需要发出synchronous请求时,您正在向服务器发出asynchronous请求。

http://api.jquery.com/jQuery.ajax/

因为ajax本质上是异步的, isAlreadyUploaded不会等待服务器响应,并且由于您没有从isAlreadyUploaded返回任何内容,因此它将被视为true ,并且按钮将提交表单。

您可以将ajax config的async属性设置为false以便它将在离开该函数之前等待服务器响应。

function isAlreadyUploaded() {

    var mystring = "", retVal = false;

    $.ajax({
        async: false
        type: "POST",
        url: "Main.aspx/alreadyUploaded",
        data: "{'swfFile':'" + $("#<%=FileUpload2.ClientID%>").val() + "','flvFile':'" + $("#<%=FileUpload3.ClientID%>").val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {

            mystring = msg.d;
            alert(mystring);
            if (mystring != "") {

                if (confirm(mystring)) {
                    retVal = true;
                } else {
                    retVal= false;
                }
            } else {
                retVal = true;
            }
        }
    });     

    return retVal;  
}

在ajax工具箱中有一个ConfirmButtonExtender,可能正是您要寻找的。 这是我找到的示例: http : //www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ConfirmButton/ConfirmButton.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM