代码改变世界

asp.net AJAX 使用webServices调用时,出现“WebService”未定义

2013-08-02 15:41  wmsdg  阅读(275)  评论(0)    收藏  举报

首先继续鄙视一下坑爹的asp.net,对自己的无知继续表示极度的无语

一个非常简单的在ajax中的web service调用

首先取一个自定义的web services备用

  [WebService(Namespace = "http://my.org/",Description="test")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
     [System.Web.Script.Services.ScriptService]
    public class MyWebService : System.Web.Services.WebService
    {

        [WebMethod]
        public string Merge(string a, string b)
        {
            return a + b;
        }
}

注意其中的[System.Web.Script.Services.ScriptService],这是必须的

然后是AJAX出场

 1 <input id="txt1" size="5" type="text" /> +
 2 <input id="txt2" size="5" type="text" /> =
 3 <input id="txt3" size="10" type="text" />
 4 <input type="button" value="Merge" onclick="MergeIt()" />
 5 
 6 <script type="text/javascript">
 7         function MergeIt() {
 8             new MyWebService.Merge($get("txt1").value, $get("txt2").value, MergeComplete);
 9         }
10         function MergeComplete(result) {
11             $get("txt3").value = result;
12         }
13 </script>

前面四行2个输入框,一个结果显示框,一个提交按钮

script内是JS调用的代码,MergeIt()是数据传送,调用webService的方法,多出的一个参数是结果返回用来显示数据的JS方法名

$get是document.getElementById的缩写 对JS一窍不通,真真心烦

1      <asp:ScriptManager ID="ScriptManager1" runat="server">
2          <Services>
3              <asp:ServiceReference Path="MyWebService.asmx" />
4          </Services>
5                 </asp:ScriptManager>

ScriptManager控件的Services集合属性里添加服务引用MyWebService.asmx

ready?Go!

撞墙上了

Microsoft JScript 运行时错误: “MyWebService”未定义

左思右思,均不得解

百度。。。。有高人解:此处需在所引用的WebService前加nameSpace名称,我这里的nameSpace是Webtest,so

1     <script type="text/javascript">
2         function MergeIt() {
3             new Webtest.MyWebService.Merge($get("txt1").value, $get("txt2").value, MergeComplete);
4         }
5         function MergeComplete(result) {
6             $get("txt3").value = result;
7         }
8 </script>

但为什么要这样,还是不懂耶,还望高手赐教!