2

我正在尝试学习如何通过 jquery 使用 Web 服务和 ajax,但我遇到了一个我不知道如何解决的问题

我有一个 html 页面包含:

<!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $('#btn').click(function () {
            $('div').load('AjaxServices.asmx/HelloWorld');

        });
    });
</script>
</head>
<body>
    <h1>ws</h1>
    <button type="button" id="btn">get info</button>
    <p>the site says...</p>

    <div id="one"></div>
    <div id="two"></div>
    <div id="three"></div>
</body>

asmx.cs:

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

namespace ajaxTutorial
{
[[WebService(Namespace = "http://appdev.com/jQueryAjax")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
 [System.Web.Script.Services.ScriptService]
public class AjaxServices : WebService
{
    private static int count = 0;

    [WebMethod]
    public string HelloWorld()
    {
        count++;
        return "Hello World" +count.ToString();
    }
}
}
  • 运行 asmx.cs 文件时,它会加载..当我调用该方法时,它似乎没问题。

- 这是我在 chrome 上遇到的错误:

在此处输入图像描述

- 这是解决方案资源管理器:

在此处输入图像描述

这是正在打开的端口: 在此处输入图像描述

*我真的不知道发生了什么,有人可以指导我吗?

我有什么选择来解决它?

先谢谢了。(是的,我知道它是一项古老的技术,稍后我将学习使用 wcf)

4

2 回答 2

2

这一行:

$('div').load('AjaxServices.asmx/HelloWorld');

...使用 HTTP GET 调用 Web 服务方法。出于安全原因,在 .NET 1.1 中默认禁用此功能。

这在http://support.microsoft.com/kb/819267进行了解释

为了启用它,您需要在 <system.web> 下的 web.config 中添加它:

<webServices>
  <protocols>
    <add name="HttpGet"/>
  </protocols>
</webServices>  
于 2012-12-30T18:28:51.177 回答
0

更新:

尝试将其用于您的按钮处理程序/AJAX 加载:

$(document).ready(function () {
    $('#btn').click(function () {
        var p = $('<p />');
        //$('div').load('AjaxServices.asmx/HelloWorld');
        $.ajax({
            "url": "AjaxServices.asmx/HelloWorld",
            "error": function(jqXHR, textStatus, errorThrown) {
                $('div').empty().append(p.clone().text(textStatus)).append(p.clone().text(errorThrown));
            },
            "success": function(data, textStatus, jqXHR) {
                $('div').empty().append(p.clone().text(textStatus)).append(p.clone().text(data));
            }
        });
    });
});

这样,完整的错误至少应该出现在您的浏览器中。

原来的:

定义HelloWorldstatic

[WebMethod]
public static string HelloWorld()
{
    count++;
    return "Hello World" +count.ToString();
}
于 2012-12-30T14:54:42.160 回答