我在javascript中使用以下函数来调用执行某些服务器端检查的WebMethod:
<script type="text/javascript">
function comprobar()
{
PageMethods.F1
(
$("input[type=text][id*=txt_nombre_nu]").val(),
$("input[type=text][id*=txt_numero_empleado]").val(),
$("input[type=text][id*=combo_empresa_nu]").val(),
$("input[type=text][id*=txt_ceco]").val(),
$("input[type=text][id*=combo_gestor_nu]").val(),
$("input[type=text][id*=combo_crear_datos]").val(),
function (msg)
{
if (msg == "")
{
alert("Datos correctos");
return true;
}
else
{
alert(msg);
return false;
}
},
function (msg)
{
}
);
}
</script>
函数本身似乎正确执行,因为如果数据不正确,它会显示带有正确数据的警报
关键是执行此函数后,我需要执行服务器端代码执行的事件OnClick。我知道可以创建另一个PageMethod来执行代码,问题是需要调用的代码不是静态的,所以我不能把它放在WebMethod上。
无论如何,我做了以下检查:
这是我定义事件的按钮:
<obout:OboutButton runat="server" ID="btn_mdu_confirmar" Text="Confirmar" CausesValidation="true"
OnClientClick="comprobar();return false;" OnClick="btn_mdu_confirmar_Click"/>
我已经检查过如果返回false则不执行btn_mdu_confirmar_Click但是如果我将其更改为return true;它始终在OnClientClickEvent之后执行。那么,为什么不像OnClientClick =“return comprobar();”甚至OnClientClick =“comprobar();”不工作,看起来它总是返回一个假的真值,即使msg与“”不同?
需要注意的是我无法调试javascript代码,但如果它正确显示警报,我认为没有一个简单的return语句失败的真正原因。
希望你能帮助我,谢谢你的时间。
答案 0 :(得分:0)
这是与您的JS代码相关的更新代码:
function comprobar()
{
PageMethods.F1
(
$("input[type=text][id*=txt_nombre_nu]").val(),
$("input[type=text][id*=txt_numero_empleado]").val(),
$("input[type=text][id*=combo_empresa_nu]").val(),
$("input[type=text][id*=txt_ceco]").val(),
$("input[type=text][id*=combo_gestor_nu]").val(),
$("input[type=text][id*=combo_crear_datos]").val(),
function (msg)
{
if (msg == "")
{
alert("Datos correctos");
return true;
}
else
{
alert(msg);
return false;
}
},
function (msg)
{
}
);
return true; //now comprobar() always returns true;
}
然后,HTML中的此更新应该执行此操作:
<obout:OboutButton runat="server" ID="btn_mdu_confirmar" Text="Confirmar" CausesValidation="true"
OnClientClick="return comprobar();" OnClick="btn_mdu_confirmar_Click"/>
您可以检查方法PageMethods.F1
的结果,并检查这是真还是假,并在comprobar()
结束时返回结果。由于我不知道PageMethods.F1
是如何工作的,因此我无法使用此更新代码。 (它不在你的帖子中)。