使用jQuery实现向RESTful API发送POST请求

3
我将尝试将使用Cordova插件的REST调用转换为JQuery AJAX POST。我的JQuery代码不正确,调用时出现连接被拒绝的错误(访问本地主机)。我成功地向本地主机发出GET请求,因此不存在连接问题。
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调用中的data选项,但据我理解,那是您想要传递到服务器端的数据所在的位置。

我确实有其他对此TrackResource类进行GET调用的工作,因此我知道URL的基本部分是正确的。 我也知道trackid值已正确填充。


你能否用 AJAX 构建与你正在尝试的 POST 完全相同的请求,并直接将其 POST 到端点以查看发生了什么?我真的没有看到 jQuery 存在任何问题。 - Mike Brant
是的,使用 Firefox REST 客户端,我可以将此帖子发布到我的本地主机。 - user1209575
我需要使用contentType参数,并将其设置为application/json。然而,这并没有解决我的连接问题。我仍然收到java.net.ConnectionException错误。 - user1209575
2个回答

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'
});

非常感谢您的回答,当我访问我的开发服务器时,它起作用了。使用您的建议在访问我的开发服务器时完美地运行。但不幸的是,我仍然无法连接到本地主机,出现了连接异常。 - user1209575

0
我需要使用我的计算机的路由器地址 192.... 来访问我的本地主机... 我正在一个实际的 Android 设备上运行应用程序,但是,在 AJAX 调用中尝试使用 localhost 或 127.0.0.1 必须会导致问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接