无法连接到Web服务

时间:2012-12-30 14:47:22

标签: jquery asp.net asmx

我正在尝试通过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上遇到的错误:

enter image description here

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

enter image description here

这是正在打开的端口: enter image description here

*我真的不知道发生了什么事,有人能指导我完成这件事吗?

我有什么选择来解决它?

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

2 个答案:

答案 0 :(得分:2)

这一行:

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

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

http://support.microsoft.com/kb/819267

解释了这一点

为了启用它,您需要在&lt; system.web&gt;下的web.config中添加它:

<webServices>
  <protocols>
    <add name="HttpGet"/>
  </protocols>
</webServices>  

答案 1 :(得分: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));
            }
        });
    });
});

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

<强> ORIGINAL:

HelloWorld定义为static

[WebMethod]
public static string HelloWorld()
{
    count++;
    return "Hello World" +count.ToString();
}