我正在尝试使用 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调用中的数据选项,但据我所知,这是您放置要传递服务器端的数据的位置。
我确实对同一个 TrackResource 类进行了其他 GET 调用,因此我知道 URL 的基本部分是正确的。我知道 trackid 值也已正确填充。
最佳答案
如果您要发布 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'
});
关于rest - 使 jquery AJAX POST 到 Restful API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15619603/