日期:2014-05-18  浏览次数:20422 次

asp.net中,JS调用WebService问题
webservice代码:
[WebMethod]
public string HelloWorld()
{
  return "Hello world";
}

JS代码:
<script type="text/javascript" language="javascript" >
  WebService.HelloWorld( function sucess(res){alert(res);},
  function failed(res){alert(res);},
  "调用web服务");
</script>

asp.net代码:
<asp:ScriptManager ID="ScriptManager1" runat="server" >
  <Services>
  <asp:ServiceReference Path="WebService.asmx" />
  </Services>
</asp:ScriptManager>

结果错误是:WebService没有定义。

------解决方案--------------------
js调用webserver要先写命名空间再写类名,再写方法名格式为:
命名空间.类名.方法名
------解决方案--------------------
你有没有在scriptmanager中reference这个服务阿?
还有就是你建的服务是不是在WebService文件夹里?
------解决方案--------------------
<script language="javascript" type="text/javascript">
var xmlHttp;
function createHttpReques()
{
if(window.ActiveXObject)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();
}
else
{
alert("创建对象失败,请更换浏览器");
}
}
function GetCity(obc)
{

createHttpReques();
var id=obc.options[obc.selectedIndex].value;
xmlHttp.open("GET","WebService1.asmx/GetCity?id="+id,true);
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var obj = xmlHttp.responseXML;
var cc = document.getElementById("DropDownList2");

ClearItem(cc);

var dd = document.getElementById("DropDownList3");

ClearItem(dd);
var ary = obj.getElementsByTagName("City");
alert(ary.length);
for (i = 0; i < ary.length; i++) {
var optio = document.createElement("option");
optio.text = ary[i].getElementsByTagName("CityName")[0].firstChild.nodeValue;
optio.value = ary[i].getElementsByTagName("CityID")[0].firstChild.nodeValue;
cc.options.add(optio);
}
}
}
xmlHttp.send(null);
}
------解决方案--------------------
webservice的CS页面的代码有没有加上[ScriptService]标签啊,如果没有的话不能被JS调用的,楼主检查一下

/// <summary>
/// 说明
/// </summary>
[WebService(Namespace = "SysTest/MyService.asmx")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class MyService: System.Web.Services.WebService {
.......

------解决方案--------------------
探讨
OK了,把JS那点代码写在一个事件里,好了。这是怎么回事。

------解决方案--------------------
加上这个[System.Web.Script.Services.ScriptService]命名空间就可以了!!!呵呵
------解决方案--------------------