远程调用ASPX方法返回未定义的数据

时间:2013-12-12 08:13:44

标签: jquery asp.net ajax html5 web-services

我是ASP.NET和Web服务的新手。我从* .aspx页面调用Web服务,返回正确的输出。但是当我从外部HTML页面方法调用* .aspx方法时,将成功函数中的未定义数据返回给AJAX方法。

以下是我对* .aspx方法的ajax调用

// JavaScript Document
 $(document).ready(function() {
        $.ajax({
            type: 'POST',
            url: 'http://localhost:49367/Ex2/Default.aspx/getHotelMenuList',
            data: '{}',
            contentType: 'text/xml; charset=utf-8',
            async: true,
            dataType: 'xml',
             complete: function(){
                alert("hi");
            },
            error: function(jqXHR, textStatus, errorThrown) { alert(errorThrown); },
            success: function (msg) {
                alert("Data:"+msg.d);
            }
    });
});

我的aspx代码如下,

Default.aspx的

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
    </div>
    </form>
</body>
</html>

Default.aspx.cs

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using HotelWebReference;
using System.Web.Services;

public partial class _Default : System.Web.UI.Page
{

    [System.Web.Services.WebMethod]
    public static string getHotelMenuList()
    {
        HotelWebReference.HotelAppForTabWebService proxy = new HotelWebReference.HotelAppForTabWebService();
return proxy.getMenuType();

    }
}

请让我知道我的代码出了什么问题,或者我应该在代码中做出哪些更改。

1 个答案:

答案 0 :(得分:0)

几点说明:

1)您没有实现Web服务,而是实现页面。因此,您返回的不是XML(当您指定dataType: 'xml'时,这是客户端的预期数据

2)您正在请求一个页面,并且您正在指定一个对Web服务有效的contentType

您可以在应用程序(* .asmx或WCF)中解决此实现的真实Web服务,或者,根据您需要返回的内容,使用服务器中的jQuery.get()