当前位置:编程学习 > JAVA >>

使用js访问rest webservice

有没有什么好点的工具使用js来访问rest webservice ?
要求能使用post方式访问, 并且能携带json类型的请求体  。 还要能处理返回的json内容


下面是我用jquery的ajax方法来请求的, 但是有一个问题。 服务端已经正确返回了,浏览器的response的responseStatus的值也是200 ,但是alert(success)不会执行,alert("error")和alert("complete");都会执行

var getRecentlyURL = "http://localhost:8888/recently_post" ; 
function requestRecentlyPOST(userId , lastPostId , content){
var content = genRequestBody(userId , lastPostId , content) ; //得到json字符串参数
$.ajax({                 
    type: "POST", 
    url: getRecentlyURL ,   
contentType :"text/plain; charset=UTF-8",    
     data:content      
                       
}).done(function() {
    alert( "success" );
  })
  .fail(function(r) {
    alert( "error" + r);
  })        
  .always(function() {
    alert( "complete" );             
  });    
}
--------------------编程问答--------------------
   type: "post",
                    ///
                    success: function(msg) {
                        alert(msg);
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    },

看看错误信息。 --------------------编程问答--------------------
引用 1 楼 rui888 的回复:
   type: "post",
                    ///
                    success: function(msg) {
                        alert(msg);
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    },

看看错误信息。




var content = genRequestBody(userId , lastPostId , content) ;
 $.ajax({
         type: "post",  
         contentType :"text/plain; charset=UTF-8",
         url: getRecentlyURL, 
         data: content,    
         dataType: 'json',
         success: function(result) {
             alert(result);        
         },     
 error: function(XMLHttpRequest, textStatus, errorThrown) {
         alert(XMLHttpRequest.status);
         alert(XMLHttpRequest.readyState);
         alert(textStatus);
     }
     });  

进了error
alert的3个值依次是 0 、 0、 error --------------------编程问答-------------------- 你后台没有成功返回数据吧。 状态 是0。 --------------------编程问答--------------------  // contentType :"text/plain; charset=UTF-8",
这个注释掉。试试看。 --------------------编程问答--------------------
引用 3 楼 rui888 的回复:
你后台没有成功返回数据吧。 状态 是0。

成功返回了, 我在后端看了的,是成功返回的。  使用firebug也看到response的status=200 , 但是不清楚js里面为什么会这样 --------------------编程问答--------------------
引用 4 楼 rui888 的回复:
 // contentType :"text/plain; charset=UTF-8",
这个注释掉。试试看。

还是不行 。这是后端的log ,status=200

2013-10-31 17:08:48 org.restlet.engine.log.LogFilter afterHandle
信息: 2013-10-31 17:08:48 127.0.0.1 - - 8888 POST /recently_post - 200 - 59 677 http://localhost:8888 Mozilla/5.0 (Windows NT 6.2; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0 -

--------------------编程问答-------------------- 你用 ie 试试看看。你服务器端返回的是json是吧。
--------------------编程问答--------------------
引用 7 楼 rui888 的回复:
你用 ie 试试看看。你服务器端返回的是json是吧。
是的 --------------------编程问答--------------------
引用 7 楼 rui888 的回复:
你用 ie 试试看看。你服务器端返回的是json是吧。

ie也不行 , 我直接用firefox的rest图形界面插件访问都能正确返回。 
但是就是js不行 --------------------编程问答-------------------- 服务器重新启动发布下。应该是本地没有发布成功。 --------------------编程问答--------------------
引用 10 楼 rui888 的回复:
服务器重新启动发布下。应该是本地没有发布成功。


发布成功了。  --------------------编程问答-------------------- 看不出来。如果参数有问题。 你后台就不会进去。很奇怪。你直接浏览器访问呢。http://localhost:8888/recently_post
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,