1调用webservice方法
<script language="javascript" src="jquery-1.3.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
function WebServiceMethod()
{
$.ajax(function(){
type:"POST",
contentType: "application/json;utf-8",
url:"WebService.asmx/Hello",
data;"{name"""+$("#inputName").val()+"""}",
success:function(data)
{
var json = null;
try {
json = eval('(' + data + ')');
}
catch (e) {
alert("返回字符串不是json格式!");
return;
}
alert(json.d);
//alert(data);
}
});
}
})
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="inputName" type="text" value="" />
<a href="#" onclick="WebServiceMethod();">调用web服务</a>
</div>
</form>
</body>
</html>
WebService.asmx:
[ScriptService]
public class WebService : System.Web.Services.WebService {
[WebMethod]
public string Hello(string name)
{return "Hello,"+name; }
}
2调用页面方法
<script language="javascript" src="jquery-1.3.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
function WebServiceMethod()
{
$.ajax(function(){
type:"POST",
contentType: "application/json;utf-8",
url:"Default9.aspx/Hello",
data;"{name"""+$("#inputName").val()+"""}",
success:function(data)
{
var json = null;
try {
json = eval('(' + data + ')');
}
catch (e) {
alert("返回字符串不是json格式!");
return;
}
alert(json.data);
//alert(data);
}
});
}
})
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="inputName" type="text" /></div>
<a href="#" onclick="WebServiceMethod();">j</a>
</form>
</body>
</html>
Default9.aspx:
[WebMethod]
public static string Hello(string name)
{ return "Hello," + name; }
上面两个调用都出错,不知道怎么回事
另外 我用CascadingDropDown控件时,出现 error500错误 怎么回事
谢谢大家帮忙..
一般调用Web服务的步骤:
1.Web服务一定要添加[ScriptService]
1)添加引用:System.Web.Extensions;
2)using System.Web.Script.Services;
2.web.config中添加
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpHandlers>
3.jquery调用时需要指明格式:
contentType:"application/json"
dataType:"json"
无参数时,需要以下方式来传递
data:{}
终于在这里发现了 我的错误 简直太感谢了
Fencer在上面做了回答,但里面回答的有问题!你写的ajax提交的部分也是有问题的!如果你看过Jquery帮助文档的话,我想这里不会出现问题。首先我说下你上面出现的几个错误,contentType类型,这个是指浏览器支持的所有文件类型,而你这里设置成application/json;utf-8这是错误的,具我了解的不曾有这样的类型。同时在默认的情况下Jquery库支持的contentType类型是application/x-www-form-urlencoded,他可以满足一般所用到的情况,不是特别需要一般不用添加给添加这个类型。
从你的问题来看,你返回的数据格式是json类型,需要Jquery库能解析他,哪么你需要做的是设置ajax的dataType类型为json即可
另外一点,你传入的data参数如果按照你的写法是想传入一个json吗?不过即时是这样我想你的写法也是有问题的data;"{name"""+$("#inputName").val()+"""}", 仔细看下会有几个问题的,是:不是;,即时是json类型也少不了name:'xxx'这样的格式。
ajax提交的data数据,Jquery会自动转换成字符串如果不是的话,因此按照你这里的写法会有错误产生,当然如果你不喜欢被Jquery本身说转换哪么你需要设置processDate为false,这样子他就会按照原样发送到服务器端
其次关于WebServices的东西,我这里不做过多的说,我想VS已经把我要说的都自动生成了
综上ajax提交部分可以如下写:
$.ajax({
url:"Default9.aspx/Hello",
type:"POST",
dataType:"json",
data:"name="+$("#inputName").val(),
success:function(obj){
//处理返回的json对象
}
});
或者
$.ajax({
url:"Default9.aspx/Hello",
type:"POST",
dataType:"json",
data:"{name:'"+$("#inputName").val()+"'}",
processData:false,
success:function(obj){
//处理返回的json对象
}
});