各位好,最近LZ遇到了一个业务场景。类似于银行做业务的评价功能。
银行职员做完一个业务后需按一下评价器,然后需等待客户按评价器评价。但是这个时候银行职员应该可以继续做下一个业务,而客户点击评价器或者不点评价器(20s超时)都应该记录出来。
这里面存在一个问题,客户按不按这个评价功能都不能影响银行职员继续往下办理业务。但是同时应该还需要接收客户反馈回来的评价信息。初步LZ考虑的是用异步调用的方法来操作,这样保证不会影响到银行办理下一个业务。但是问题出现了,异步方法里面调用获取评价结果的js触发不了。苦寻无果,遂前来求助大家。希望大家能给点意见,面对这样的业务场景该怎么来做,同时如果有大牛能解惑下这里为啥js触发不了。谢谢了异步异步调用js.NETJS回调

解决方案 »

  1.   

    问题就是异步方法里面调用js的时候触发不了,但是这个js放到其他地方(例如按钮事件中)可以正常触发。
      

  2.   

    用chrome或者firefox下的firebug插件调试下js看下出现什么问题
      

  3.   

    JS应该没什么问题,我用IE调试的,是直接不能触发。因为获取评价结果的这个JS要放到异步里面不停的调用,但是就是触发不了这个JS
      

  4.   

    你的异步方法可以执行其它的方法成功吗?比如alert("test")这种?
      

  5.   

    大致源码如下:
    //声明委托
    public delegate string GetEvaDelegate(object sender, EventArgs e);//请您评价
    protected void btnThank_Click(object sender, EventArgs e)
    {
      GetEvaDelegate getEva = new GetEvaDelegate(GetEvaStr);
      getEva.BeginInvoke(sender, e, new AsyncCallback(CallBack), null);
    }private string GetEvaStr(object sender, EventArgs e)
    {
       XXX;
       ScriptManager.RegisterStartupScript(this, this.GetType(), "Ext", "reExeForEva()", true);
      return xxx;
    }
    private void CallBack(IAsyncResult tag)
    {
       xxx;
    }
    reExeForEva();方法在前台注册的任一方法(如alter('a'))。但是这个方法触发不了
      

  6.   

    我用你的代码测试发现,注册的js是可以执行的。<script type="text/javascript">
    function reExeForEva() {
    alert("test");
    }
    </script>
    <asp:Button runat="server" Text="Button" OnClick="btnThank_Click" />//声明委托
    public delegate string GetEvaDelegate(object sender, EventArgs e);public partial class About : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e) { } //请您评价
    protected void btnThank_Click(object sender, EventArgs e) {
    GetEvaDelegate getEva = new GetEvaDelegate(GetEvaStr);
    getEva.BeginInvoke(sender, e, new AsyncCallback(CallBack), null);
    } private string GetEvaStr(object sender, EventArgs e) {

    ScriptManager.RegisterStartupScript(this, this.GetType(), "Ext5-1", "reExeForEva()", true);
    return "test";
    } private void CallBack(IAsyncResult tag) {

    }
    }