Post запрос связанный с базой данных
Здравствуйте, вообще ничего не понимаю в javascript, не могли бы вы указать, где ошибка в моем коде, пишет 500 internal server error
<html>
<body onload="loadorder()">
<input placeholder="Name" id="N" type=text size="20">
<input placeholder="Description" id="D" type=textarea size="60">
<select id="1">
</select>
<button onclick="post()">Записать</button>
</body>
</html>
<script>
function loadorder()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
openJSON(xmlhttp.responseText);
}
}
xmlhttp.open("GET", 'https://apex.oracle.com/pls/apex/mariakom/zoo/order_a', true);
xmlhttp.send();
}
function openJSON(response)
{
var dv=document.getElementById("1")
var arr = JSON.parse(response);
for (i = 0; i < arr.items.length; i++)
{
var el = document.createElement('option');
el.innerHTML = arr.items[i].id+ ". "+arr.items[i].name;
dv.appendChild(el);
}
}
function post()
{
var ord=document.getElementById("1").id;
var n=document.getElementById("N");
var desc=document.getElementById("D");
var xhr = new XMLHttpRequest();
var url = "https://apex.oracle.com/pls/apex/mariakom/zoo/family";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function ()
{
if (xhr.readyState === 4 && xhr.status === 200) {
var json = JSON.parse(xhr.responseText);
console.log(json.name + ", " + json.description);
}
};
var data = JSON.stringify({"name": n, "description": desc,"order_a_id": ord});
xhr.send(data);
}
</script>
|
МарияКоми,
код на сервере проверяли? |
А как это сделать? Я правда ничего не понимаю в этом, так что сразу извиняюсь за глупый вопрос
|
МарияКоми,
подожите специалистов по серверам. |
var ord=document.getElementById("1").id; - это как понимать, зная ID элемента, запрашивать его? С таким же успехом можно написать сразу - var ord = 1;
Вы используете API чужого сервера, значит нужно внимательно читать их документацию. Эти два GET запроса отработают без проблем: https://apex.oracle.com/pls/apex/mariakom/zoo/order_a https://apex.oracle.com/pls/apex/mariakom/zoo/family Причем второй и без параметров возвращает json. А вот попытка по второму URL обратиться методом POST завершается неудачей - статус 500. |
Я первый раз работаю с javascript не могли бы вы тогда пояснить как мне из выбранного select получить одно из двух значений? Там прописывается как бы id order'а и name его же
Задача сие метода заключается же чтобы он по нажатию на кнопку методом post записывал введенные данные с экрана в таблицу, я так понимаю, что делаю это неправильно, не могли бы вы точнее пояснить в че ошибка, пожалуйста? |
Цитата:
Чисто из теории. Допустим у вас есть один список и вам нужно получить значение какого-то его атрибута, тогда да:
var id = document.querySelector('select').id
А вы ведь зная ID, оперируете им явно и в то же время хотите его получить. Понятно же и без пояснений, что это глупость. Если же нужно получить "одно из двух значений", то значений чего, выбранной опции списка? Ну так значение value самого списка и будет значением выбранной его опции, то есть
var ord = document.getElementById("id списка, и не увлекайтесь цифрами").value;
Что такое "методом post записывал введенные данные с экрана в таблицу" я не знаю, но если речь идет о записи в базу по URL представленному, то я же вроде бы как написал, что данное API не принимает POST запросы, а только GET. Вы используете сервис Oracle, значит вы не можете вытворять что вам хочется, а работать только теми методами, что описаны в API сервиса. Читайте документацию, я ее не читал, не знаю, что там можно, чего нет я не знаю. |
Большое спасибо, вопрос решен и все работает:)
|
| Часовой пояс GMT +3, время: 05:06. |