asp.net Ajax 之简单数据回传

上一篇asp.net Ajax 值错误处理简单的描述了asp.net下Ajax的错误处理。这一篇主要说一下Ajax的数据传递。主要从三种形式实现数据的回传。1、使用客户端WebReqest对象也是就.ashx文件;2、使用页面的静态函数;3、使用WebService。

一、使用WebReqest对象处理数据传递。
1、创建一个.ashx文件,在实现IHttpHandler接口的ProcessRequest(HttpContext context)中写一段测试代码如下:

ContractedBlock.gif ExpandedBlockStart.gif Code
context.Response.ContentType = "text/plain";
string text = context.Request.Params["text"];
JavaScriptSerializer jss 
= new JavaScriptSerializer();
context.Response.Write(jss.Serialize(text));

接下来在页面中

ContractedBlock.gif ExpandedBlockStart.gif Code
<script language="javascript" type="text/javascript">
            
function onComplete(response)
            {
               
if (response.get_responseAvailable())
               {
                   
var text = response.get_object();
                   alert(text);
               }
            }
            
function AjaxRequest(text)
            {
                
var request = new Sys.Net.WebRequest();
                request.set_url(
'test.ashx');
                request.set_httpVerb(
"POST");
                request.add_completed(onComplete);                
                request.set_body(
'text='+encodeURIComponent(text));
                request.invoke();
            }            
        
</script>
        
<input type="button" value="Test" onclick="AjaxRequest('Hello,This is a test!')" />

二、使用页面的静态函数。为什么一定要使用静态函数,我不得而知,但老赵的博客中好像有关于不用static函数的文章,有兴趣的可以去找找看看。在使用该方式前,先要设置一下ScriptManager控件的EnablePageMethods="true"属性。废话不多了,请看页面代码:

ContractedBlock.gif ExpandedBlockStart.gif Code
<asp:ScriptManager ID="sm7" runat="server" EnablePageMethods="true"></asp:ScriptManager>
    
<script type="text/javascript" language="javascript">
        
function CallBackResult(value)
        {
            alert(value);
        }
        
function ExcuteAjax(text)
        {
            PageMethods.AjaxTest(text,CallBackResult);
        }        
    
</script>
    
<input type="button" value="submit" onclick="ExcuteAjax('this is a test!')" />

在后台页面,只是一个非常简单的静态的测试函数,当然我在函数表明WebMethod属性:

ContractedBlock.gif ExpandedBlockStart.gif Code
[WebMethod]
public static string AjaxTest(string str)
{
    
return "Holle " + str;
}

三、使用WebService。要使用WebService首要的任务就是在ScriptManager控件中配置WebService的地址,比如在根目录下创建了一个WebServiceTest.asmx。那么ScriptManager控件的配置如下:

ContractedBlock.gif ExpandedBlockStart.gif Code
<asp:ScriptManager ID="sm8" runat="server">
     
<Services>
          
<asp:ServiceReference Path="~/WebServiceTest.asmx" InlineScript="false" />
     
</Services>
</asp:ScriptManager>

当然如果想应用多个WebService,那么就多添加几条。接下来就是在页面中写一些js代码了:

ContractedBlock.gif ExpandedBlockStart.gif Code
<script language="javascript" type="text/javascript">
    
function AjaxTest(text)
    {
         testajax.ajaxTest.WebServiceTest.ReturnValue(text,show);
    }
    
function show(value)
    {
        alert(value);
    }
</script>
<input type="button" value="Test" onclick="AjaxTest('This is a test!')" />

其中的testajax.ajaxTest是WebServiceTest.asmx的命名空间,同理在WebServiceTest.asmx文件中也只有很简单的测试代码如下,但是别忘了设置一下WebMethod属性和ScriptMothod属性:

ContractedBlock.gif ExpandedBlockStart.gif Code
[WebMethod]
[ScriptMethod]
public string ReturnValue(string str)
{
    
return "Hi," + str;
}
这篇 asp.net Ajax 之简单数据回传就到这里,这篇现在是指传一个简单的string类型的数据,下一篇将介绍一下复杂数据的传递。

转载于:https://www.cnblogs.com/Nimeux/archive/2008/08/11/1265548.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值