ASP.NRT 关于JS调用后台代码如何实现?急
我现在想实现的是在页面上点击 超链接 调用页面的JS方法,在JS方法中调用后台代码并返回值,在JS中根据后台返回值确定跳转页面,我写的代码如下,但在调试中发现只是在页面初始化时会自动调用后台方法(CheckOrderType),而在页面中点击超链接却没有调用后台方法(CheckOrderType),望高手帮忙看看。
JS代码:
<script type="text/javascript">
function NewWindowSLLR(P, Q, PC) {
var a = "spdm=" + P + "&orderdm=" + Q + "&pici=" + PC;
var result = '<%=CheckOrderType("'+Q+'") %>';
if (result == "1") {
window.open('../Agent/Manage/SLLR.aspx?' + a, '_blank', 'height=400, width=1024, top=300, left=300, toolbar=no, menubar=no, scrollbars=yes, resizable=yes,location=no, status=no');
} else {
window.open('../Agent/Manage/SLLRNEW.aspx?' + a, '_blank', 'height=400, width=1024, top=300, left=300, toolbar=no, menubar=no, scrollbars=yes, resizable=yes,location=no, status=no');
}
}
</script>
页面代码:
<a href="javascript:void(0);" onclick="NewWindowSLLR('<%# Eval("SPDM") %>','<%=orderdm %>','<%# Eval("OD_PICI") %>');"class="wenzi_link">明细</a>
后台代码:
public int CheckOrderType(string orderDM)//string orderDM
{
if (!this.IsPostBack)
{
return -1;
}
else
{
if (!string.IsNullOrEmpty(orderDM))
{
return ListSPQDLBL.GetOrderType(orderDM);
}
else
{
return -1;
}
}
}
我现在希望的效果是,点击超链接,调用JS方法,在JS方法中调用后台方法,后台方法返回值,确定在JS中具体跳转的页面。急,望高手赐教。
[解决办法]
或者采用回调的方法执行
<%@ Page Language="C#" EnableViewState="false" %><%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> private string ReturnBackValue = " 返回到客户端的内容 | "; //声明函数,用来返回到客户端。 public string GetCallbackResult() { return ReturnBackValue;//将结果返回客户端 } //声明一个函数,用来接收客户端的参数;函数名字不可以随便,必须是RaiseCallbackEvent才可以 public void RaiseCallbackEvent(String eventArgument) { this.ReturnBackValue += eventArgument; }</script><html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title> <script type="text/javascript"> function myfunction(arg) { <%=Page.ClientScript.GetCallbackEventReference(Page, "arg", "showMsg","")%>; } function showMsg(rValue) { alert(rValue); } alert("刷新测试"); </script></head><body> <form id="form1" runat="server"> <input type="button" onclick="myfunction('客户端传入的参数')" value="无刷新调用" /> </form></body></html>
[解决办法]
在你看到页面效果的时候,页面和服务器已经没有关系了。
[解决办法]
<script language ="javascript" type="text/javascript">
document.getElementById ("lbClose").click()
</script>
<asp:LinkButton ID="lbClose" Text ="返回上一页面" OnClick="lbClose_Click" runat="server"></asp:LinkButton>
可以试下
[解决办法]
建议用AJAX调用。
根据后台页面response的值来判断。
AJAX思路简单,一看就明白,去百度搜索。
回调我觉的思路上比AJAX稍微罗嗦些。