Update - 2016-01-30JQuery xhr.status возвращает 0 при отправке запроса на локальный
Как сообщили в комментариях у меня есть:
- установлен XAMPP
- положил мою страницу на Apache и запустил сервер
- удостоверился, что страница и скрипты выполняются (простой тестовый тест)
- установить xhrFields: withCredentials на false, чтобы сделать CO Запрос RS, как указано в единственном ответе и преподаваемом here
Я все еще не могу передать запрос. Это журнал консоль:
XMLHttpRequest cannot load http://localhost:8080/RimmaNew/rest/appointments.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost' is therefore not allowed access. The response had HTTP status code 400
Вот как это выглядит на «конечный пользователь», если это какая-либо помощи:
-------------- ---- Начальный билет -----------------------------
У меня есть приложение для отдыха java, которое выполняется локально и принимает до сих пор можно получить метод и возвращает строку json:
Другим методом является POST, что есть предположение ed для преобразования, проверки и сохранения информации из отправленной формы и возврата 200 ответов. Если что-то пойдет не так во время преобразования, проверки или сохранения - исключение вызывается (например, BadRequest или 500).
Это метод остальные (я для краткости опущены проверки, построить методы, а также преобразователя и поставщика преобразователя классы):
@POST
@Produces("application/json")
@Consumes("application/x-www-form-urlencoded")
public Response bookAppointment(@FormParam("date") Date appDate,
@FormParam("time") Time appTime, @FormParam("type") String appType,
@FormParam("clientName") String clientName, @FormParam("email") String clientEmail,
@DefaultValue("") @FormParam("message") String clientMsg) {
//externalize the validation of all fields to concentrate on "positive"
//scenario only
validator(appDate, appTime, appType, clientName, clientEmail);
Appointment appointment = build(appDate, appTime, appType,clientName,
clientEmail, clientMsg);
try {
repository.add(appointment);
return Response.ok(appointment).build();
} catch (Exception e) {
throw new InternalServerErrorException("Something happened in the application "
+ "and this apointment could not get saved. Please contact us "
+ "to inform us of this issue.");
}
}
Клиент не внутри приложения (я подумал, может быть это будет быть полезным) - это простой HTML-файл на компьютере, который имеет этот скрипт JQuery:
<script type='text/javascript'>
$(document).ready(function(){
$('form#appointmentForm').submit(function(ev){
ev.preventDefault();
$.ajax({
url: 'localhost:8080/RimmaNew/rest/appointments',
type: 'post',
dataType: 'json',
data: $('form#appointmentForm').serialize(),
contentType: 'application/x-www-form-urlencoded',
beforeSend: function() {
$('#ajaxResponse').html("<img src='245.gif' />");
},
success: function(data) {
$('#ajaxResponse').html("<span style='color:white; background-color: green;' class='glyphicon glyphicon-ok'></span><p>"+JSON.stringify(data)+"</p>")
.fadeIn("slow");
},
error: function(xhr, ajaxOptions, thrownError){
$('#ajaxResponse').html("<span style='color:white; background-color: red;' class='glyphicon glyphicon-exclamation-sign'></span><p>Status: ").append(xhr.status)
.append("</p>").fadeIn("slow");
}
});
});
});
</script>
Я хочу представить форму, чтобы получить доступ к его Params с @FormParam аннотированных атрибутами. При каждом запросе, который я отправляю, я не получаю ни одной из брошенных ошибок, и статус всегда равен 0. Вы видите, где я заблуждаюсь или что мне не хватает?
Что вы подразумеваете под *»... клиент не внутри приложение - это простой HTML-файл на моем компьютере, который имеет этот сценарий jQuery "*, ajax не удается из-за того же происхождения, если вы используете этот скрипт из протокола' file: // '. – adeneo
Это файл html, не установленный на любой сервер приложений. Этот файл просто находится в/home/myusername/subdir1/subdir2/RimmaNew/ Вы говорите, что я не могу использовать jQuery вот так? Есть ли работа? – vasigorc
Вы можете использовать jQuery, но если этот .html-файл не обслуживается с реального веб-сервера с помощью протокола http, вы нарушаете политику одного и того же происхождения и не можете делать ajax, как протоколы, порты и домены должен совпадать. – adeneo