我正在使用遗留的Web应用程序 - 有一个带有一些文本输入和一些文件输入的表单,表单保存在PostBack上。
HTML:
<input id="txt1" name="txt1" type="text" />
<input id="hfd1" name="hfd1" type="hidden" value="-1" />
<input id="file1" name="file1" runat="server" type="file" />
<asp:Button ID="btnSave" runat="server" OnClientClick="return PrepareSave()" OnClick="btnSave_Click" Text="Save" />
JS:
function PrepareSave() {
$('#hfd1').val($('#txt1').val());
return true;
}
我需要在PrepareSave()
内发送一个AJAX请求来验证服务器上的字段,并根据响应继续使用PostBack或不执行。我试过这个:
function PrepareSave() {
Project1.Web.Services.AJAXService1.CheckSomething(someString, function (result) {
if (result == true) {
// continue PostBack
$('#hfd1').val($('#txt1').val());
return true;
}
else {
// abort PostBack
alert('invalid');
return false;
}
});
}
但它失败了 - 无论AJAX响应如何,它都不会回发。我已经尝试实现接受的答案here,但它遇到了同样的问题。我能做些什么才能让它发挥作用?
我已经尝试简化上面接受的答案,以测试它:
<asp:Button ID="btnSave" runat="server" ClientIDMode="Static" OnClientClick="PrepareSave(); return false;" Text="Save" />
<asp:Button ID="btnSaveHidden" runat="server" ClientIDMode="Static" OnClick="btnSave_Click" Visible="False" />
function PrepareSave() {
$('#btnSaveHidden').click(); // does nothing. also tried .trigger('click')
}
答案 0 :(得分:0)
在代码背后你可以做到:
ClientScript.RegisterStartupScript(GetType(), "ReloadParent", "window.parent.location.href = window.parent.location.href;", true);
或在js中,单独使用脚本部分:
window.parent.location.href = window.parent.location.href;
第h