我现在想用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);
}
}
能帮我清楚的改一下么。我都快崩溃了
function getdata()
{
$.ajax({
type: "get",
url: "Handler.ashx?xx=123456" ,
beforeSend: function(XMLHttpRequest) {
},
success: function(data) {
alert(data);
}
});
}
使用ajax去实现不就简单多了。。。
@白雲天: 能帮我改改么。我真不会
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);
你先试一下这个小例子,试试能不能实现你想要的效果,根据自己的需求改一下就行。。。
post 的时候给一个参数action ,以此来判断是否执行
是在load页面的时候他的这个js就会调用了。而且这段js.应该说是ajax代码在第一次页面load的时候就执行了
那 可能是 js調用的問題,是不是寫錯了?
按照你的描述,是想要在页面加载完成后,通过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
});
}
好像照这样改没用。你看看我的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);
}
}
我真心不知道怎么改了
@2B程序员: as真心不会,推荐使用JQuery Ajax,先做例子程序,简单易用。