我是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();
}
}
请让我知道我的代码出了什么问题,或者我应该在代码中做出哪些更改。
答案 0 :(得分:0)
几点说明:
1)您没有实现Web服务,而是实现页面。因此,您返回的不是XML(当您指定dataType: 'xml'
时,这是客户端的预期数据
2)您正在请求一个页面,并且您正在指定一个对Web服务有效的contentType
您可以在应用程序(* .asmx或WCF)中解决此实现的真实Web服务,或者,根据您需要返回的内容,使用服务器中的jQuery.get()
。