纯JavaScript Ajax调用asp.net的WebMethod [英] Pure javascript ajax call asp.net webmethod

查看:157
本文介绍了纯JavaScript Ajax调用asp.net的WebMethod的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不喜欢叫asp.net服务器端code使用jQuery $阿贾克斯。
所以我写了一个纯JavaScript AJAX的文件。但是当我打电话的WebMethod,这不工作。
可以anyony帮助我了解如何正确的呢?非常感谢你。

ajax.js:

  VAR AJAX = {
    _params:空,
_callback:空,
 _xhr:空,
_createXHR:功能(){
如果(window.ActiveXObject){
 _xhr =新的ActiveXObject(Microsoft.XMLHTTP); // IE
}
    否则,如果(window.XMLHtt prequest){
        _xhr =新XMLHtt prequest(); //火狐,Chrome等。
    }
},_ajaxcallback:功能(){
    如果(_xhr.readyState == 4){
        如果(_xhr.status == 200){
            _callback.call(这一点,_xhr.responseText)
        }
    }
},_changeParams:功能(){
    变参=参数[0];
    变种S =;
    对(在args变种I){
        S + =&放大器; + I +=+ ARGS [I];
    }
    _params =秒;
},得到:函数(URL,参数,可以回调){
    _callback =回调;
    ajax._createXHR();
    ajax._changeParams(PARAMS);
    如果(NULL!= _xhr){
        _xhr.open('得到',网址+ + _params,真正的?);
        _xhr.onreadystatechange = ajax._ajaxcallback;
        _xhr.send();
    }
},岗位:功能(URL,参数,可以回调){
    _callback =回调;
    ajax._createXHR();
    ajax._changeParams(PARAMS);
    如果(NULL!= _xhr){
        _xhr.open('后',网址,真实);
        _xhr.onreadystatechange = ajax._ajaxcallback;
        _xhr.setRequestHeader(内容类型,应用程序/ x-WWW的形式urlen codeD);
        _xhr.send(_params);
    }
}
}

WebForm1.aspx的

 <头=服务器>
<标题>< /标题>
<脚本SRC =ajax.js类型=文/ JavaScript的>< / SCRIPT>
<脚本类型=文/ JavaScript的>
    功能ajaxtest(){
        。VAR UID =的document.getElementById(txtuid)值;
        VAR PWD =的document.getElementById(txtpwd)值。
        ajax.post(WebForm1.aspx的/ GetModel,{'UID'+ UID +,PWD:+ PWD +}功能(数据){
            警报(数据);
        });
    }
< / SCRIPT>< /头>
<身体GT;
<表ID =form1的=服务器>
< D​​IV>
<输入类型=文本ID =txtuidVALUE =EEEE/>
<输入类型=文本VALUE =222ID =txtpwd的onblur =ajaxtest()/>

WebForm1.cs:

  [的WebMethod]
    公共静态字符串GetModel(UID字符串,字符串PWD)
    {     回到1;
    }


解决方案

在您的标记,你需要有一个的ScriptManager 的EnablePageMethods 设置为true。这样做将确保你可以调用您已标记了方法 [的WebMethod]

在你的JavaScript可以再调用你的方法是这样的: PageMethods.GetModel(username的密码,OnSuccessMethod,OnFailureMethod); - 你不会不需要任何的的ActiveXObject / XmlHtt prequest 的东西,如果你做这种方式,这让事情变得简单多了。

I would not like to call asp.net server side code with jquery $.ajax . So I have written a pure javascript ajax file .But when I call webmethod,this do not work. Can anyony help me out how correct this? THANK you very much .

ajax.js:

var ajax = {
    _params: null,
_callback: null,
 _xhr: null,
_createXHR: function () {
if (window.ActiveXObject) {
 _xhr = new ActiveXObject("Microsoft.XMLHTTP");     //IE
}
    else if (window.XMLHttpRequest) {
        _xhr = new XMLHttpRequest();      //FireFox,Chrome et.
    }
},

_ajaxcallback: function () {
    if (_xhr.readyState == 4) {
        if (_xhr.status == 200) {
            _callback.call(this, _xhr.responseText)
        }
    }
},

_changeParams: function () {
    var args = arguments[0];
    var s = "";
    for (var i in args) {
        s += "&" + i + "=" + args[i];
    }
    _params = s;
},

get: function (url, params, callback) {
    _callback = callback;
    ajax._createXHR();
    ajax._changeParams(params);
    if (null != _xhr) {
        _xhr.open('get', url + '?' + _params, true);
        _xhr.onreadystatechange = ajax._ajaxcallback;
        _xhr.send();
    }
},

post: function (url, params, callback) {
    _callback = callback;
    ajax._createXHR();
    ajax._changeParams(params);
    if (null != _xhr) {
        _xhr.open('post', url, true);
        _xhr.onreadystatechange = ajax._ajaxcallback;
        _xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        _xhr.send(_params);
    }
}
}

WebForm1.aspx

<head runat="server">
<title></title>
<script src="ajax.js" type="text/javascript"></script>
<script type="text/javascript">
    function ajaxtest() {
        var uid = document.getElementById("txtuid").value;
        var pwd = document.getElementById("txtpwd").value;
        ajax.post("WebForm1.aspx/GetModel", "{ 'uid':" + uid + ", 'pwd':" + pwd + " }", function (data) {
            alert(data);
        });
    }
</script>

</head>
<body>
<form id="form1" runat="server">
<div>
<input type="text" id="txtuid" value="eeee" />
<input type="text" value="222" id="txtpwd" onblur="ajaxtest()"/>

WebForm1.cs:

     [WebMethod]
    public static string GetModel(string uid,string pwd)
    {

     return "1";
    }

解决方案

In your markup you need to have a ScriptManager with EnablePageMethods set to true. Doing this will ensure you can call the methods you have marked up with [WebMethod].

In your JavaScript you can then call your method like this: PageMethods.GetModel("userName", "password", OnSuccessMethod, OnFailureMethod); - you won't need any of the ActiveXObject/XmlHttpRequest stuff if you do it this way, which keeps things much simpler.

这篇关于纯JavaScript Ajax调用asp.net的WebMethod的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆