jQuery ajax调用REST服务

前端之家收集整理的这篇文章主要介绍了jQuery ajax调用REST服务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图进行ajax调用从jquery到休息服务。使用的休息服务是从mkyong的博客的教程,这一个: http://www.mkyong.com/webservices/jax-rs/integrate-jackson-with-resteasy/

服务工作,但是当我尝试从jQuery调用时,在Firebug有一个200状态代码,但在响应部分,什么也没有。

这里是ajax调用的html页面

<html>
<head>
    <script type="text/javascript" src="jquery-1.6.2.min.js"></script>
</head>

<body>  

<button id="ajax">ajax call</button>
<button id="json">json</button>

<script type="text/javascript">
    $('#json').click(function(){ 
        alert('json');
         $.getJSON("http://localhost:8080/restws/json/product/get",function(data) {
            alert(data);         
          });   
    });

    $('#ajax').click(function(){ 
        alert('ajax');
         $.ajax({ 
             type: "GET",dataType: "json",url: "http://localhost:8080/restws/json/product/get",success: function(data){        
                alert(data);
             }
         });
    });

</script>



</body>

</html>

我不能弄清楚我出错了,你能告诉我我做错了什么?

谢谢!

解决方法

您正在从与请求的主机不同的主机运行HTML。正因为如此,你被 same origin policy阻挡了。

一种方法是使用JSONP.这允许跨站点请求。

在JSON中,返回:

{a: 5,b: 6}

在JSONP中,JSON被包装在一个函数调用中,因此它成为一个脚本,而不是一个对象。

callback({a: 5,b: 6})

您需要编辑REST服务以接受称为回调的参数,然后使用该参数的值作为函数名称。您还应该将内容类型更改为application / javascript。

例如:http:// localhost:8080 / restws / json / product / get?callback = process应该输出

process({a: 5,b: 6})

在JavaScript中,您需要告诉jQuery使用JSONP。要做到这一点,你需要附加?callback =?到URL。

$.getJSON("http://localhost:8080/restws/json/product/get?callback=?",function(data) {
     alert(data);         
   });

如果你使用$ .ajax,它会自动附加?callback =?如果你告诉它使用jsonp。

$.ajax({ 
   type: "GET",dataType: "jsonp",success: function(data){        
     alert(data);
   }
});

猜你在找的jQuery相关文章