首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

AJAX 异步子用WebService

2012-11-08 
AJAX 异步调用WebService页面中的脚本如下:JScript codefunction btnInvoke_onclick(){var theName docu

AJAX 异步调用WebService
页面中的脚本如下:

JScript code
function btnInvoke_onclick(){    var theName = document.getElementById("tbName").value;    SimpleWebService.SayHello(theName, onSayHelloSucceeded);//此处出错。}function onSayHelloSucceeded( result ){    document.getElementById("result").innerHtml = result;}


aspx页面文件:
C# code
<from id="form1" runat="server">    <asp:ScriptManager ID="sm" EnablePateMethods="true" runat="server">      <Service>        <asp:ServiceReference Path="Services/SimpleWebService.asmx" />      </Service>    </asp:ScriptManager>    <div>    <input id="tbName" type="text" />    <input id="btnInvoke" type="button" value="Say Hello" onclick="return btnInvoke_onclick()" />    <div id="result" ></div>     <div></from>


SimpleWebService.asmx文件中的内容:
C# code
......using System.Web.Script.Service;......namespace WebApplication1{    ....    ....    [ScriptService]    public class SimpleWebService : System.Web.Services.WebService   {        [WebMethod]        public string SayHello( string name )        {             return string.Format( "Hello {0}!", name );        }   } }


出现的错误是:
Microsoft JScript 运行时错误:‘SimpleWebService’未定义。
[color=#FF0000][/color]

我在网上找了一些说法:
1. 路径问题:该webservice文件时建立在WebApplication1下的,与页面在同一个文件夹下。
2. 添加命名空间,由于该webservice文件时建立在WebApplication1下的,因此命名空间与CS文件的命名空间是一致的,如果硬要写成:
JScript code
WebApplication1.SimpleWebService.SayHello(theName, onSayHelloSucceeded);
 
错误就是WebApplication1未定义。

该程序是从网上的某个博客中找到的,据博主所说,内容出自“APS.NET AJAX 程序设计”。

请教怎么处理,谢谢!


[解决办法]
ScriptManager不是很好的东西

使用jQuery 吧,简单

jQuery Ajax 调用 WebService 返回数据表(DataTable)的方法。

HTML 代码
HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">  <title>jQuery Ajax 调用 WebService 返回数据表(DataTable)的方法。</title>  <script type="text/javascript" src="jquery-1.5.js"></script>  <script type="text/javascript">    function ParseDate(jsonDate) {      var date = new Date(parseInt(jsonDate.substr(6)));      return date.toLocaleString();    }    function GetData() {      $.ajax({        type: "post", //注意这里是 post        url: "WebService.asmx/GetDataTable",        data: "{\"id\":\"8888\"}",        contentType: "application/json;charset=utf-8", //提交数据的方法格式        dataType: "json", //返回数据的格式        success: function (result) {          //你可以 alert(result.d)看数据返回的格式          data = jQuery.parseJSON(result.d);          t = "<table border='1'>";          $.each(data, function (i, item) {            t += "<tr>";            t += "<td>" + item.UserId + "</td>";            t += "<td>" + item.Name + "</td>";            t += "<td>" + item.Count + "</td>";            t += "<td>" + ParseDate(item.CreateDate)+ "</td>";            t += "</tr>";          })          t += "</table>";          $("#result").html(t);        },        error: function (result) { alert(result.responseText); }      });    }    window.onload = GetData;  </script></head><body>  <div id="result"></div></body></html> 


[解决办法]
在web service中写成这样试试[WebService(Namespace = "http://tempuri.org/")]
[System.Web.Script.Services.ScriptService]
public class SimpleWebService : System.Web.Services.WebService

然后再用你原来的方法试试,看会不会出错
[解决办法]
Services/SimpleWebService.asmx 这里为什么会有个目录Services呢?

热点排行