我正在尝试通过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();
}
}
}
- 这是我在Chrome上遇到的错误:
- 这是解决方案资源管理器:
这是正在打开的端口:
*我真的不知道发生了什么事,有人能指导我完成这件事吗?
我有什么选择来解决它?
先谢谢了。 (是的,我知道它是一项古老的技术,我将在以后学习使用wcf)
答案 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();
}