3

我正在尝试将使用 Cordova 插件的 REST 调用转换为 JQuery AJAX POST。我没有正确的 JQuery 代码,调用出现连接被拒绝错误(命中 localhost)。我已成功向本地主机发出 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 值也正确填充。

4

2 回答 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'
});
于 2013-03-25T16:19:16.910 回答
0

我需要使用我的计算机的路由器地址 192 .... 才能访问我的本地主机...我在实际的 Android 设备上运行该应用程序,但是,我想尝试使用本地主机或 127.0.0.1 AJAX 调用一定是引起了问题。

于 2013-03-28T00:14:43.167 回答