2013-03-25 3 views
2

Я пытаюсь преобразовать вызов REST с помощью плагина Cordova в JQuery AJAX POST. У меня нет кода JQuery правильно, вызов получает отказ от отказа в соединении (попадание в localhost). Я успешно делаю запросы GET для своего локального хоста, поэтому проблема с подключением отсутствует.Создание jquery AJAX POST для resful API

Код API REST:

@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-адреса верна. Я знаю, что значение трекинга заполнено правильно.

+0

Вы можете сформулировать тот же POST, который вы пытаетесь сделать с помощью AJAX, и отправить его прямо в конечную точку, чтобы узнать, что произойдет? Я действительно не вижу никаких проблем с jQuery. –

+0

Да, используя firefox REST клиент, я могу сделать это сообщение на моем localhost. – user1209575

+0

Мне нужно было использовать параметр contentType и установить его в application/json. Однако это не помогло мне решить проблемы с подключением. Я все еще получаю java.net.ConnectionException. – user1209575

ответ

0

мне нужно использовать адрес маршрутизатора моего компьютера, 192 .... для того, чтобы ударить мой Localhost ... Я бегала приложение на реальном устройстве Android, однако, я думаю, пытаясь использование localhost или 127.0.0.1 в вызове AJAX должно было вызывать проблемы.

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