Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.11.2018, 19:09
Новичок на форуме
Отправить личное сообщение для МарияКоми Посмотреть профиль Найти все сообщения от МарияКоми
 
Регистрация: 09.11.2018
Сообщений: 4

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>

Последний раз редактировалось МарияКоми, 09.11.2018 в 19:12.
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2018, 19:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

МарияКоми,
код на сервере проверяли?
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2018, 19:26
Новичок на форуме
Отправить личное сообщение для МарияКоми Посмотреть профиль Найти все сообщения от МарияКоми
 
Регистрация: 09.11.2018
Сообщений: 4

А как это сделать? Я правда ничего не понимаю в этом, так что сразу извиняюсь за глупый вопрос
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2018, 20:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

МарияКоми,
подожите специалистов по серверам.
Ответить с цитированием
  #5 (permalink)  
Старый 10.11.2018, 04:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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.

Последний раз редактировалось laimas, 10.11.2018 в 04:35.
Ответить с цитированием
  #6 (permalink)  
Старый 10.11.2018, 11:49
Новичок на форуме
Отправить личное сообщение для МарияКоми Посмотреть профиль Найти все сообщения от МарияКоми
 
Регистрация: 09.11.2018
Сообщений: 4

Я первый раз работаю с javascript не могли бы вы тогда пояснить как мне из выбранного select получить одно из двух значений? Там прописывается как бы id order'а и name его же
Задача сие метода заключается же чтобы он по нажатию на кнопку методом post записывал введенные данные с экрана в таблицу, я так понимаю, что делаю это неправильно, не могли бы вы точнее пояснить в че ошибка, пожалуйста?
Ответить с цитированием
  #7 (permalink)  
Старый 10.11.2018, 12:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от МарияКоми
Я первый раз работаю с javascript не могли бы вы тогда пояснить как мне из выбранного select получить одно из двух значений?
Вы думаете я знаю чего вам надо получить?

Чисто из теории. Допустим у вас есть один список и вам нужно получить значение какого-то его атрибута, тогда да:

var id = document.querySelector('select').id


А вы ведь зная ID, оперируете им явно и в то же время хотите его получить. Понятно же и без пояснений, что это глупость. Если же нужно получить "одно из двух значений", то значений чего, выбранной опции списка? Ну так значение value самого списка и будет значением выбранной его опции, то есть

var ord = document.getElementById("id списка, и не увлекайтесь цифрами").value;


Что такое "методом post записывал введенные данные с экрана в таблицу" я не знаю, но если речь идет о записи в базу по URL представленному, то я же вроде бы как написал, что данное API не принимает POST запросы, а только GET. Вы используете сервис Oracle, значит вы не можете вытворять что вам хочется, а работать только теми методами, что описаны в API сервиса. Читайте документацию, я ее не читал, не знаю, что там можно, чего нет я не знаю.

Последний раз редактировалось laimas, 10.11.2018 в 12:07.
Ответить с цитированием
  #8 (permalink)  
Старый 10.11.2018, 12:20
Новичок на форуме
Отправить личное сообщение для МарияКоми Посмотреть профиль Найти все сообщения от МарияКоми
 
Регистрация: 09.11.2018
Сообщений: 4

Большое спасибо, вопрос решен и все работает
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
POST запрос с большим объёмом данных fedushok AJAX и COMET 3 28.07.2018 13:31
Перезагрузка страницы без post данных Makkssimka Элементы интерфейса 1 29.10.2015 19:38
Проблема с асинхронной передачей данных через POST Kapitan79 AJAX и COMET 2 28.12.2013 11:47
POST запрос воспринимается как OPTIONS neshta AJAX и COMET 0 29.03.2011 23:34
Синхронный запрос данных по AJAX Shasoft AJAX и COMET 2 03.03.2009 14:07