Asp.net ajax 调用WebService报WebService未定义错误
自觉对Asp.net Ajax用的还比较熟练,不过这个问题着是郁闷,找来找去没找原因,希望兄弟们帮忙看,是不是我哪个地方疏漏了,以下是脚本程序://处理异步调用的登录方法
function Login(e)
{
var c_username = $get("txtUsername");
var c_password = $get("txtPassword");
var c_login = $get("login");
var c_logining = $get("logining");
var c_btnlogin = $get("btnLogin");
if(c_username == null || c_password == null )
return;
if(c_username.value == "" || c_password.value == "" )
{
message_title.innerText = "出错啦!";
message_content.innerText = "用户名和密码不能为空!";
ShowMessage(e);
return;
}
c_login.style.display = "none";
c_logining.style.display = "block";
c_btnlogin.disabled = true;
portal.UserLogin(c_username.value,c_password.value,OnComplete)
}
回调的OnComplete方法就省了,因为就是提示找不到portal,我在前面家了命名空间也不行,我向不是这里的问题了,WebService里的方法我也查了N次了,也没发现问题,贴出来大伙瞅瞅。
/// <summary>
/// 处理前台事件的WebService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class portal : System.Web.Services.WebService
{
public portal() { }
[WebMethod]
public string UserLogin(string username, string password)
{
Components.Common.UserHttp http = new Components.Common.UserHttp();
string msg = http.Login(username,password);
return msg;
}
}
Asp.net Ajax的ScriptManager也在页面添加了
<asp:ScriptManager runat="server" ID="sm" EnablePartialRendering="true">
<Services>
<asp:ServiceReference Path="portal.asmx" />
</Services>
</asp:ScriptManager>
那个portal.asmx文件与我调用的这个页面一样,都在网站(不是虚拟目录)根目录下,WebConfig文件配置的应该没问题,因为我其他ajax程序都在用,就现在使用js调用WebService的时候报错
,真是奇怪,花了俺一上午都没找到
对了,我的ajax组件使用的是Asp.Net Ajax 1.0 RC版本,开发环境是VS2005+SP1,打了SP1补丁的 --------------------编程问答-------------------- 没看明白,JS里的portal是从哪来的?你是指这个页面所对应的类名么? --------------------编程问答-------------------- 大哥,你看后面嘛
<asp:ScriptManager runat="server" ID="sm" EnablePartialRendering="true">
<Services>
<asp:ServiceReference Path="portal.asmx" />
</Services>
</asp:ScriptManager>
portal当然就是站内的WebService文件咯 --------------------编程问答-------------------- JS中对Atlas所定义的类的引用应放在ScriptManager的声明之后,也就是Atlas在做Type.registerNamespace之后放置 --------------------编程问答-------------------- 跟这个有关系么,我这是一个按钮事件,执行的时候页面所有东西都加载好了的 --------------------编程问答-------------------- up --------------------编程问答-------------------- 我也是同样问题 --------------------编程问答-------------------- 是不是要 Path="~/Portal.asmx" --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- portal.UserLogin(c_username.value,c_password.value,OnComplete)
这里该成
你的实际使用的namespace.portal.UserLogin(c_username.value,c_password.value,OnComplete) ;
如果你还没明白,那么就在页面查看源代码中查找“portal.”,你就会知道怎么调用了。 --------------------编程问答-------------------- 跟你问题相同
--------------------编程问答-------------------- 受教了
补充:.NET技术 , ASP.NET