纯JavaScript Ajax调用asp.net的WebMethod [英] Pure javascript ajax call 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的=服务器>
< DIV>
<输入类型=文本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屋!