【问题标题】:Calling *.aspx function from remote HTML page从远程 HTML 页面调用 *.aspx 函数
【发布时间】:2013-12-11 13:06:50
【问题描述】:

您好,我是 Web 应用程序开发的新手。我创建了一个 *aspx 页面,该页面通过返回字符串的方法调用 web 服务。现在我想使用任何脚本语言从远程 HTML 5 页面调用这个 aspx 方法,并在远程 HTML 页面上显示数据。 谁能告诉我如何调用 aspx 方法并在 HTML 5 页面上显示内容。

以下是我正在使用的代码,

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 HotelTabWebServiceWebReference;
    using System.Web.Services;

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

      [System.Web.Services.WebMethod(true)]
      protected static string getHotelMenuList()
       {
            HotelTabWebServiceWebReference.HotelAppForTabWebService proxy = new HotelTabWebServiceWebReference.HotelAppForTabWebService();
            string menuList = null;  
          try
            {
                menuList = proxy.getMenuType();
            }
            catch (FormatException)
           {
               Console.Write("error");
           }
        return menuList;
        }
     }

当我使用 default.aspx 运行这个 default.aspx.cs 页面时,它显示工作正常

但是当我从外部 HTML 5 调用它时,它什么也没做

HTML 5 代码:

 <!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>
    <title>Untitled Page</title>
   <script type="text/javascript" src="jquery-1.10.2.js"></script>
   <script type="text/javascript" src="newJS.js"></script>

    </head>
     <body onload="sendSOAPRequest()">
      <div id="myDiv">data returned by aspx function should appear here</div>
      </body>
      </html>

JQuery代码如下,

// JavaScript Document
function sendSOAPRequest()
{


$.ajax({
    url: "http://localhost:50664/ASPX/Default.aspx/getHotelMenuList",
    type: "POST",
    dataType: "xml",
    data: "{}",
    complete: endFunction,
    async: true,
    contentType: "text/xml; charset=\"utf-8\"",
    success: function (msg) {
        $('#myDiv').text(msg.d); 
    }      

});
}
function endFunction(xmlHttpRequest, status)
{
    alert("complete"+xmlHttpRequest.re);
}

执行 HLML 5 文件时执行 endFunction 但不进入成功函数。

请告诉我该怎么做。 提前致谢。

【问题讨论】:

  • 您可以先在您的 ajax 调用中添加一个error 事件并在那里查看错误详细信息
  • @RonnoDex:当我显示任何东西时,页面上会出现 default.aspx 页面内容,但我需要根据客户要求在 HTML 5 页面上显示内容
  • 是的,正如我所说,将 error: function(jqXHR, textStatus, errorThrown) { alert(errorThrown); } 添加到您的 ajax 调用中

标签: c# javascript jquery asp.net html


【解决方案1】:

在 aspx 源代码中,您必须有一个脚本管理器启用 Web 方法,您必须将其放入表单 &lt;asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"&gt; 我用下一个 jquery 函数对其进行测试

 $(document).ready(function() {
            $.ajax({
                type: 'POST',
                url: 'Default.aspx/getHotelMenuList',
                data: '{ }',
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function (msg) {
                    alert(msg.d);
                }
            });
        });

【讨论】:

  • 感谢您的回答!现在它正在返回远程 HTML 上的数据,但我现在面临的问题是它正在返回未定义的数据!你能告诉我问题是什么以及可以做些什么吗?我对此完全陌生,请提供任何帮助!
  • 首先返回一个简单的字符串内容为“Hello Test”之类的,这是我做的测试。如果字符串是 xml 或 html,则其他问题可能是响应类型,您必须在 ajax 调用的内容类型中指定,因此对于 xml,它必须是 contentType: 'text/xml; charset=utf-8' 和 html contentType: 'text/html; charset=utf-8'
【解决方案2】:

您是否尝试过这样的设置:

contentType: 'text/xml; charset=utf-8'

【讨论】:

    猜你喜欢
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多