从JQuery $ .ajax调用WebService会收到错误500

时间:2013-04-11 02:02:20

标签: jquery asp.net ajax

我正在努力完成我的第一个WebService,因此我决定将所有内容都删除。仍然没有工作。

我创建了一个全新的ASP.NET网站项目。

我添加了一个名为WebService的文件夹。在WebService文件夹中,我使用ASP.NET模板添加了一个新的WebService。我只修改了模板以取消注释[System.Web.Script.Services.ScriptService]。

在Default.aspx页面中,在“欢迎使用ASP.NET”之后,我添加了一个面板,如下所示:

<asp:Panel ID="Panel1" runat="server" Height="200px" Width="200px" BackColor="Blue" onclick="HelloWorld();">
</asp:Panel>

我还将以下脚本添加到HeaderContent区域:

<script type="text/javascript" language="Javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>

<script type="text/javascript">

    function OnSuccessCall(response) {
        alert("Success! : " + response);
    }
    function OnErrorCall(response) {
        alert(response.status + " " + response.statusText);
    }
    function HelloWorld() {
        var pageUrl = '<%=ResolveUrl("~/WebService/WebService.asmx")%>'

        $.ajax({
            url: pageUrl + "/HelloWorld",
            success: OnSuccessCall,
            error: OnErrorCall
        });
    }

 </script>

当我运行此代码时,我收到错误500.我错过了什么?

// -------------------------------更新------------- ---------------------------------

啊!一个新的线索!如果将WebMethod移动到Default.aspx的代码隐藏中,而不是作为WebService类的一部分,而只是作为具有[WebMethod]属性的方法,它就可以工作。 (至少我得到了我的OnSuccess功能OK)。但是,如果我再添加

contentType: "application/json; charset=utf-8",
dataType: "json",

到$ .ajax()调用,我回到了我的错误500(尽管可能是出于不同的原因)。是否有一些我缺少JSON的安装件?

// -------------------------------更新------------- --------------------------------- 这是实际的WebService。正如我之前所说,它正是您在创建New Item并选择Web Service时获得的。

如果有人能告诉我这对他们有用,那么我可以专注于环境问题。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

/// <summary>
/// Summary description for WebService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
 [System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {

    public WebService () {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string HelloWorld( ) {
        return "Hello World";
    }

}

1 个答案:

答案 0 :(得分:1)

你要么没有尝试编译代码,要么没有把你的实际代码放在这里

[WebMethod]
public string HelloWorld(string name) { //<--- you forget method param name to specify
    return "Hello World";
}

因此,请删除参数(例如public string HelloWorld())或添加我在代码中显示的名称。

此外,由于您没有任何参数,您只需将服务方法的url放在浏览器中,看看会发生什么。即转到http://localhost/yourapp/WebService/WebService.asmx/HelloWorld,或任何真实的网址