[英]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
请求。
因为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.