0

jquery$.ajaxを使用してasp.netサーバー側コードを呼び出したくありません。だから私は純粋なjavascriptajaxファイルを書きました。しかし、webmethodを呼び出すと、これは機能しません。誰かがこれをどれだけ正しくするか私を助けることができますか?どうもありがとうございます 。

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";
    }
4

2 に答える 2

3

ScriptManagerマークアップでは、 withEnablePageMethodsを true に設定する必要があります。これを行うと、マークアップしたメソッドを確実に呼び出すことができます[WebMethod]

JavaScript では、次のようにメソッドを呼び出すことができます: PageMethods.GetModel("userName", "password", OnSuccessMethod, OnFailureMethod);-ActiveXObject/XmlHttpRequestこのようにすれば何も必要ありません。

于 2012-10-09T02:17:09.720 に答える
0

Michael Schwarz の AJAX.PRO を使用 --> http://www.ajaxpro.info/

于 2012-10-09T15:03:56.013 に答える