我有一个vb.net函数,我想从javascript调用两个都在.ascx。 在这段代码中,我使用jquery弹出一个对话框,然后点击对话框上的按钮(btnok),我想调用一个函数loadgraph()whihch是一个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>
答案 0 :(得分:1)
您尝试使用的内容称为PageMethods - 但是,页面方法代码(静态方法)必须是某些页面(aspx)代码的一部分。您不能将页面方法代码放在后面的用户控件(ascx)代码中
我怀疑这种限制的原因是以.ascx
结尾的网址不是为了客户端消费(你会得到404) - 它们纯粹是为了服务器端操作。
对于您来说,简单的解决方案是在页面(aspx)代码中移动相关方法并更改网址,例如"Schart.aspx/loadgraph"
。您始终可以将所有代码保存在ascx文件中,并从虚拟页面方法代码中调用它,从而将相关的UI和代码保存在ascx文件中。