首页 新闻 搜索 专区 学院

jquery调用WebService方法和页面方法出错

0
悬赏园豆:50 [已关闭问题]

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错误 怎么回事

 

 

谢谢大家帮忙..

 

问题补充: $.ajax(function{})改为$.ajax({}) 我打错了...还是出错 哪位 能不能给我 实例..从网上找了几个例子 都出错!谢谢... 照上面两位 说得...还是出错!
lushang的主页 lushang | 初学一级 | 园豆:90
提问于:2009-03-15 14:45
< >
分享
其他回答(1)
0

一般调用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 | 园豆:7 (初学一级) | 2009-03-15 16:04

终于在这里发现了 我的错误  简直太感谢了

支持(0) 反对(0) duckweed | 园豆:200 (初学一级) | 2012-06-26 14:36
0

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对象
 }
});

西越泽 | 园豆:10713 (专家六级) | 2009-03-15 22:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册