日期:2014-05-17  浏览次数:20499 次

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>"