1

我有一个我想从 javascript 调用的 vb.net 函数,它们都在 .ascx 中。在这段代码中,我使用 jquery 来弹出一个对话框,然后单击对话框上的按钮(btnok),我想调用一个函数 loadgraph(),它是一个 vb.net 函数。

<link href="css/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="javascript/jquery-1.8.3.js" type="text/javascript"></script>

<script src="javascript/jquery.bgiframe-2.1.2.js" type="text/javascript"></script>
<link href="css/demos.css" rel="stylesheet" type="text/css" />
<script src="javascript/jquery-ui.js" type="text/javascript"></script>


<script>
    // increase the default animation speed to exaggerate the effect
    $.fx.speeds._default = 1000;


    $(function() {
        $( "#element_to_pop_up" ).dialog({
            autoOpen: false,
            show: "blind",
            hide: "explode"
        });

        $( "#button" ).click(function() {
            $( "#element_to_pop_up" ).dialog( "open" );
            return false;
        });

         $( "#btnok" ).click(function(){
          $( "#element_to_pop_up" ).dialog( "close" );
             $.ajax({
  type: "POST",
  url: "Schart.ascx/loadgraph",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Do something interesting here.
    alert("called")
  }
});
          return false;
         });
    });
    </script>
4

1 回答 1

1

您尝试使用的称为PageMethods - 但是,页面方法代码(静态方法)必须是某些页面(aspx)代码的一部分。您不能将页面方法代码放在后面的用户控件 (ascx) 代码中。
我怀疑这个限制的原因是 url 结尾.ascx不是用于客户端消费(你会得到 404)——它们纯粹是为了服务器端操作。

对你来说,简单的解决方案是将页面(aspx)代码中的相关方法移到后面并更改url,例如"Schart.aspx/loadgraph"。您始终可以将所有代码保留在 ascx 文件中,并从虚拟页面方法代码中调用它,从而将相关的 UI 和代码保留在 ascx 文件中。

于 2013-01-08T09:12:44.283 回答