首页 新闻 会员 周边 捐助

怎样使得JS调用的ASP.NET后台方法在满足条件下才执行?

0
悬赏园豆:30 [已解决问题] 解决于 2012-03-31 11:22

我现在想用JS在满足一定的条件下在前台调用ASP.NET的一个后台方法(一般处理程序方法),而我的前台是嵌入了一个flash的(有按钮可触发事件。这个事件连接在一般处理程序上)但是现在发现那个被调用的一般处理程序,不管有没有触发flash事件,那个后台方法在一加载页面时就立即运行了,根本不等前台的JS运行,所以判断条件没起什么作用,有什么好的方法解决这个问题吗?

一般处理程序代码:

 public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string action = context.Request["xx"];
        context.Response.Write(action);
      
    }

前台:

   function fun1(){ 
            $.post("Check.ashx", function (data, status) {
                alert(data);
            });
        }

问题补充:

你看看我的as吧:

head.addEventListener(MouseEvent.MouseDown,toHead);

function toHead(ent:MouseEvent):void

{

    var url:URLRequest= new URLRequest("http:..localhost:2334/latest/Check.ashx");

 var urlV:URLVariables=new URLVariables();

    urlV.xx="head";

    urlV.data=urlV;

    url.method=URLRequestMethod.POST;

    var urlLoader:URLLoader=new URLLoader();   

    urlLoader.dataFormat=URLLoaderDataFormat.TEXT;

    urlLoader.load(url);

    urlLoader.addEventListener(Enent.COMPLETE,ec)

    function ec(e:Event):void

   {

         trace(urlLoader.data);

   } 

}

能帮我清楚的改一下么。我都快崩溃了

2B程序员的主页 2B程序员 | 初学一级 | 园豆:175
提问于:2012-03-29 10:45
< >
分享
最佳答案
1

function getdata()

{

 $.ajax({
                type: "get",
                url: "Handler.ashx?xx=123456" ,               
                beforeSend: function(XMLHttpRequest) {
                },
                success: function(data) {
                    alert(data);
                }
            });

}

收获园豆:30
KivenRo | 小虾三级 |园豆:1734 | 2012-03-30 09:14

使用ajax去实现不就简单多了。。。

KivenRo | 园豆:1734 (小虾三级) | 2012-03-30 09:15

@白雲天: 能帮我改改么。我真不会

2B程序员 | 园豆:175 (初学一级) | 2012-03-30 10:36

1.调用一个jquery脚本文件:(可以从网上下载一个)

<script src="../../JS/jquery-1.4.2.min.js" type="text/javascript"></script>

2.脚本代码,调用一般处理文件,返回执行结果:

$(function() {
            $("#sub").click(function() {
                $.ajax({
                    type: "post",  //用post进行传参
                    url: "Hander.ashx",  //指定调用页面,也可以是一个aspx页面                    
                    data: { Name: $("input[name='txtuser']").val() }, //传递参数相当于name=值
                    success: function(data, status) {
                        alert(data);//弹出文本框中的值

                     },
                    error: function() { alert("操作失败") }

                });
            });
        });

3、HTML页面代码:

<input type="text" id="txtuser" name="txtuser"/>

<input type="button" id="sub" value="获取值"/>

4、ashx一般处理文件中的代码:(复制到ProcessRequest 方法中)

string username=context.Request.Form["Name"];

context.Response.Write(username);

你先试一下这个小例子,试试能不能实现你想要的效果,根据自己的需求改一下就行。。。

KivenRo | 园豆:1734 (小虾三级) | 2012-03-30 12:48
其他回答(3)
0

post 的时候给一个参数action ,以此来判断是否执行

哇~怪兽 | 园豆:622 (小虾三级) | 2012-03-29 10:53

是在load页面的时候他的这个js就会调用了。而且这段js.应该说是ajax代码在第一次页面load的时候就执行了

支持(0) 反对(0) 2B程序员 | 园豆:175 (初学一级) | 2012-03-29 10:58
0

那 可能是 js調用的問題,是不是寫錯了?

無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-29 10:54
0

按照你的描述,是想要在页面加载完成后,通过Flash或者JS Ajax访问后台某Action么?

这是JQuery Ajax示例

//页面加载完毕后执行
$().ready(function () {
//由your_button的click事件触发
$("#your_button").bind("click", function () {
fnAjax();
});
});

function fnAjax() {
$.post('/Check.ashx','{请求参数}',function (data) {
//利用后台返回的data做点什么,也可以不写。
//data的格式取决于后台程序,推荐使用JSON
});
}
飞扬的尘埃 | 园豆:1318 (小虾三级) | 2012-03-29 17:05

好像照这样改没用。你看看我的as吧:

head.addEventListener(MouseEvent.MouseDown,toHead);

function toHead(ent:MouseEvent):void

{

    var urlV:URLRequest=new URLVariables();

    urlV.xx="head";

    urlV.data=urlV;

    url.method=URLRequestMethod.POST;

    var urlLoader:URLLoader=new URLLoader();   

    urlLoader.dataFormat=URLLoaderDataFormat.TEXT;

    urlLoader.load(url);

    urlLoader.addEventListener(Enent.COMPLETE,ec)

    function ec(e:Event):void

   {

         trace(urlLoader.data);

   } 

}

我真心不知道怎么改了

支持(0) 反对(0) 2B程序员 | 园豆:175 (初学一级) | 2012-03-30 10:34

@2B程序员: as真心不会,推荐使用JQuery Ajax,先做例子程序,简单易用。

支持(0) 反对(0) 飞扬的尘埃 | 园豆:1318 (小虾三级) | 2012-03-31 09:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册