2013-03-25 70 views
2

我试图将使用Cordova插件的REST调用转换为JQuery AJAX POST。我没有正确的JQuery代码,该调用正在获取连接拒绝错误(命中localhost)。我成功地向我的本地主机发出GET请求,所以没有连接问题。使jquery AJAX POST到resple API

的REST API代码:

@Path("/track") 
public class TrackResource { 
    ... 

在TrackResource类的方法,我试图打:

@POST 
@Path("{trackid}") 
@Consumes("application/json") 
@Produces("application/json") 
public Response addToResource(@PathParam("trackid") String trackid, String bodyJson) { 

Ajax代码:

var trackingJSON = JSON.stringify(tracking_data); 
var urlAjax = "http://localhost:7001/ds/resources/track/" + trackid; 

$.ajax({ 
    type: "POST", 
    url: urlAjax, 
    data: trackingJSON, 
    beforeSend: function() { $.mobile.showPageLoadingMsg("b", "Loading...", true) }, 
    complete: function() { $.mobile.hidePageLoadingMsg() }, 
    success: function(data) { alert("ajax worked"); }, 
    error: function(data) {alert("ajax error"); }, 
    dataType: 'json' 
}); 

我不是当然,如果我正确使用ajax调用中的数据选项,但是我的理解是,你将把你想传递的数据放在哪里r方。

我确实有其他GET调用工作的这个相同的TrackResource类,所以我知道URL的基础部分是正确的。我知道trackid值也是正确填充的。

+0

你能制定完全相同的POST,你试图用AJAX做,并直接将它POST到端点来看看会发生什么?我真的没有看到jQuery的任何问题。 – 2013-03-25 16:18:58

+0

是的,使用firefox REST客户端我可以把这篇文章发到我的本地主机上。 – user1209575 2013-03-25 21:54:45

+0

我需要使用contentType参数并将其设置为application/json。但是,这并没有解决我的连接问题。我仍然得到一个java.net.ConnectionException。 – user1209575 2013-03-26 00:39:41

回答

0

我需要用我的电脑,192的路由器地址......,为了打我的本地...我运行的实际Android设备上的应用程序,但是,我想尝试在AJAX调用中使用localhost或127.0.0.1肯定会导致问题。

3

如果您要发布JSON字符串,请确保您还设置了contentType: "application/json"

var trackingJSON = JSON.stringify(tracking_data); 
var urlAjax = "http://localhost:7001/ds/resources/track/" + trackid; 

$.ajax({ 
    type: "POST", 
    url: urlAjax, 
    contentType: "application/json", 
    data: trackingJSON, 
    beforeSend: function() { $.mobile.showPageLoadingMsg("b", "Loading...", true) }, 
    complete: function() { $.mobile.hidePageLoadingMsg() }, 
    success: function(data) { alert("ajax worked"); }, 
    error: function(data) {alert("ajax error"); }, 
    dataType: 'json' 
}); 
+0

非常感谢这个答案,而且当我打开我的Dev服务器时,这个工作很有效。当我打开我的Dev服务器时,使用您的建议可以完美地工作。然而,不幸的是,我仍然有连接问题到我的本地主机,我得到一个连接异常。 – user1209575 2013-03-25 21:54:05