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, время: 03:39. |