我试图从javascript函数调用服务器端按钮单击方法,但它不起作用,我可以知道我哪里做错了吗?
aspx代码:
<asp:Button ID="ButtonFns" Name="ButtonFns" runat="server" Text="Finish"
OnClientClick ="CountDownTick()" class="finish" onclick="ButtonFns_Click" />
Javascript代码:
function CountDownTick() {
if (_currentSeconds <= 0) {
document.getElementById('<%= ButtonFns.ClientID %>').click();
return;
}
SetCountdownText(_currentSeconds-1);
window.setTimeout("CountDownTick()", 1000);
}
点击C#按钮:
protected void ButtonFns_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Examination.mdf;Integrated Security=True;User Instance=True");
try
{
con.Open();
string snm;
string Em;
string Sx;
string uname = Session["status"].ToString();
string qry = "SELECT SName,Email,Sex FROM Students WHERE Uname=@uname";
SqlCommand cm = new SqlCommand(qry, con);
cm.Parameters.AddWithValue("@uname", uname);
SqlDataReader reader = cm.ExecuteReader();
while (reader.Read())
{
snm = reader["SName"].ToString();
Em = reader["Email"].ToString();
Sx = reader["Sex"].ToString();
if (snm != null && Em != null && Sx != null)
{
Session["snm"] = snm.ToString();
Session["em"] = Em.ToString();
Session["sx"] = Sx.ToString();
Session["uname"] = uname;
Session["RAns"] = LabelRitAns.Text;
Session["Tatt"] = LabelTotAtt.Text;
Server.Transfer("YourScore.aspx");
break;
}
}
}
catch (Exception emsg)
{
LabelErr.Text= emsg.Message.ToString();
}
finally
{
con.Close();
}
}
任何帮助将不胜感激..
答案 0 :(得分:5)
使用为JavaScript公开的__doPostBack方法。如果您传入按钮的ID和事件名称,它实际上会执行与服务器相同的回发,就像用户单击按钮一样。
ASP.NET postback with JavaScript (这使用VB代码隐藏,但我认为你需要做其他事情)
编辑:只是为了澄清,而不是调用按钮的“单击”方法,而是使用__doPostBack。
EDITx2:另外,请确保您的OnClientClick返回值为true。如果它是假的,我认为它相当于说它无效并且不应该进行回发。
答案 1 :(得分:2)
ButtonFns.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(ButtonFns, "Your postback argument"));
GetPostBackEventReference允许你获取那段JavaScript, 这样你就可以从其他地方触发回传。
本文将帮助您解决此问题
答案 2 :(得分:1)
您可以从客户端发出POST请求,首先将您的点击事件设为方法:
[WebMethods]
public static void ClickEvent()
{
//do you stuff
}
现在从您的客户端进行ajax调用,让您的网页名称为Default.aspx:
$.ajax({
type: "POST",
url: "Default.aspx/ClickEvent",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// Do something interesting here.
}
});
答案 3 :(得分:1)
在你的情况下,你可以这样做,
<script type="text/javascript">
function ImitatePressButton() {
__doPostBack('ButtonFns', '');
}
</script>
祝你好运。
答案 4 :(得分:0)
如果你想从javascript调用一个按钮,这是另一种方式。
var test = document.getElementbyId("YourButtonName");
test.onclick = function() {
//your code