首页 新闻 会员 周边

Jquery从webservice获取不到返回值....

0
[已解决问题] 解决于 2010-07-23 15:45

现要从某webservice得到一些返回值,要求用Jquery实现。= =+
--------------------------------------------------------------------------------------------

下面这个是我测试的Jquery代码

$(document).ready(function() {
            $('#btn1').click(function() {
                $.ajax({
                    type: "POST",   
                    contentType: "application/json", 
                    url: "http://xxxxxx/WebService.asmx/HelloWorld",
  //WebService的真实地址和方法名(不过其实这个页面是我为了测试临时做的,放在服务器上...),如果url用这个的话,测试点击按钮就完全没反应,貌似没取出值...
                    //url: "WebService.asmx/HelloWorld",
      //如果把这个 WebService页面跟Jquery放在一起本地调用的话倒是能弹出alert,弹出值见下面说明          
                    data: "{ }",         //做最简单的测试这里就没用参数      
                    dataType: 'json',
                    success: function(result) {                     
                        $('#dictionary').append(result);//成功的话显示返回值    
                    },
                    error: function(x, e) {
                        alert(x.responseText);
                    }
                });
            });
        });

页面html:

    <div id="btn1" class="button">
                HelloWorld</div>

        <div id="dictionary">
        </div>

webservice:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]

public class WebService : System.Web.Services.WebService {
    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World ";
    }

 }

=======================================================

说明:

如果用webservice网测试址的话,点了按钮后完全没反应
(网页左下角有黄色感叹号,说access is denied. 报错代码行数5千多行——话说我一共加起来也没几行代码 - =)

如果用第二个url,也就是本地的那个的话,也不能在dictionary中显示,而是弹出alert,alert 出来的内容就是正常访问该webservice显示出的xml 
<?xml version="1.0" encoding="utf-8" ?>
  <string xmlns="http://tempuri.org/">Hello World</string> 

另外,我这些是在VS2005下操作的............. = =||||

 

请问:

1. 怎么才能通过网址从webservice那里得到正确值啊?难道不能直接用url也要添加web引用啥的?

2. 难道Jquery真的不能用VS2005只能用2008么?为啥米?
如果可能的话,还是想尽可能用2005,因为大部分都是用2005开发的,想统一一些。当然了,如果2005真的就是不行只能用2008的话,那也只能用2008了,倒也不是死活非用2005不可~ 只是稍微告诉我一下原因,然后我好回复经理.... orz

请各位高手不吝赐教,之前完全没接触过 ajax/Jquery的小白,经理又死活让我用这个... 囧rz

深鞠躬!~ 先谢了! 如果回答的很详细我一定加分... 虽然我穷的叮当响.....  (┬_┬)

问题补充: 我举例的两个url,第二个只是为了验证这个jquery的代码到底有没有效。因为怀疑是否因为异地取值才取不到,所以做了一个本地页面取值的试验,结果果然是本地取得到,网址取不到。。。请问这种通过网址访问webservice取值的,该怎么做呢?怎么才能通过url取到webservice的返回值呢?????谢谢
我爱阳光的主页 我爱阳光 | 菜鸟二级 | 园豆:204
提问于:2010-07-09 17:17
< >
分享
最佳答案
0

自己发个实例:http://www.cnblogs.com/xlovey/archive/2008/11/19/1336427.html

Astar | 高人七级 |园豆:40805 | 2010-07-10 15:42
A大,链接我看了,可是你的实例也是调用的本地webservice啊.... 请问有没有通过网址调用远程webservice的例子么?(┬_┬) 远程的反应,跟调用本地的完全不一样啊...
我爱阳光 | 园豆:204 (菜鸟二级) | 2010-07-13 10:16
虽说远程调用需要引用该服务的,然后使用上就一样了.... 可是我现在的问题就是远程调用不成功啊..... orz 感谢各位回答... 虽然对我完全没有帮助 .... (┬_┬)
我爱阳光 | 园豆:204 (菜鸟二级) | 2010-07-23 15:47
其他回答(2)
0

你的客户端jQuery通过json格式和服务器交换数据,但是asmx默认的是xml格式,所以,你需要服务器返回json格式的数据,或者,你按照字符串获取类似 <?xml version="1.0" encoding="utf-8" ?>
  <string xmlns="http://tempuri.org/">Hello World</string>  这样的xml后,自己在客户端解析.

Launcher | 园豆:45045 (高人七级) | 2010-07-09 17:35
问题是,现在我需要从某网址(非本地文件)取值,也就是1那种情况。。。。而现在1的情况是完全取不到啊。。。。
支持(0) 反对(0) 我爱阳光 | 园豆:204 (菜鸟二级) | 2010-07-10 07:43
0

第一种情况属于跨域调用,这样调用不允许。

第二种情况要加上:contentType: 'application/json; charset=utf-8',

dudu | 园豆:30994 (高人七级) | 2010-07-09 22:02
第二种只是为了确认这个取值的jquery代码到底好不好用,是为了跟第一个做对比做的试验,看看是不是本地调用就没问题。 跨域不允许。。。那怎么才能取到呢?总有方法应该是可以取到的吧。。。 (┬_┬)
支持(0) 反对(0) 我爱阳光 | 园豆:204 (菜鸟二级) | 2010-07-10 07:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册