Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   запустить ответ POST запроса как внешний javascript (https://javascript.ru/forum/dom-window/85812-zapustit-otvet-post-zaprosa-kak-vneshnijj-javascript.html)

sovsem-nub 25.03.2024 12:33

запустить ответ POST запроса как внешний javascript
 
Есть такая форма, которая отправляет заказ на сервер.

<form  action="https://script.google.com/macros/s/AKfycby-6vsRaF6VGpPQCd0HxZAv9wrOypsYpa2mfS1_EYV2pPXYgyQBaj1ahqwWVb7TpaVqpQ/exec" method="POST" name="shopform" target="_blank">
<input name="entry.380347480" aria-label="order_number" value="_Z_">
<input name="entry.1423219090" aria-label="name" value="111">
<input name="entry.774720101" aria-label="email" value="info@heeg.ru" >
<input name="entry.1229029910" aria-label="telephone"  value="111">
<input name="entry.1932354453" aria-label="delivery_adress" >
<input name="entry.1783446383" aria-label="link_for_your_order"  value="https://heeg.ru&id=test#index.html">
<textarea name="entry.839799310" aria-label="client_comments" ></textarea>
<textarea name="entry.766941228" aria-label="manager_comments" ></textarea>
<br><input type="submit" name="rsubmit" value="не нажимай меня">
</form>

<button onclick="formsend()">Нажми меня</button>

<script>
 function formsend(){
document.querySelector('[aria-label="manager_comments"]').value="[ Арт. | Название | шт. | Цена | Стоим. ][ 246 | Мини ролл Хот Чикен | 1 | 300 | 300 ][ 302 | Оякодон | 1 | 100 | 100 ][ oplnk | Наличными | 1 | OK | OK ][ dost | Доставка курьером 300 р. | 1 | OK | 300 ][ итог: | | | | 700.00 ]"
 
  document.forms.shopform.submit()
    
  }

</script>



при отправке форма (секунд 5 отправляет) открывает в новом окне javascript файл.
Как мне не открывая нового окна в текущем окне запустить этот javascript?

sovsem-nub 25.03.2024 16:31

Вот такой огород нагородил, вроде работает. ждать ответа секунд 10

<form  action="https://script.google.com/macros/s/AKfycby-6vsRaF6VGpPQCd0HxZAv9wrOypsYpa2mfS1_EYV2pPXYgyQBaj1ahqwWVb7TpaVqpQ/exec" method="POST" name="shopform" target="_blank">
<input name="entry.380347480" aria-label="order_number" value="_Z_">
<input name="entry.1423219090" aria-label="name" value="111">
<input name="entry.774720101" aria-label="email" value="info@heeg.ru" >
<input name="entry.1229029910" aria-label="telephone"  value="111">
<input name="entry.1932354453" aria-label="delivery_adress" >
<input name="entry.1783446383" aria-label="link_for_your_order"  value="https://heeg.ru&id=test#index.html">
<textarea name="entry.839799310" aria-label="client_comments" ></textarea>
<textarea name="entry.766941228" aria-label="manager_comments" ></textarea>
<br><input type="submit" name="rsubmit" value="нажимай меня">
</form>

<script>
document.querySelector('form').addEventListener('submit', function(event) {
document.querySelector('[aria-label="manager_comments"]').value="[ Арт. | Название | шт. | Цена | Стоим. ][ 246 | Мини ролл Хот Чикен | 1 | 300 | 300 ][ 302 | Оякодон | 1 | 100 | 100 ][ oplnk | Наличными | 1 | OK | OK ][ dost | Доставка курьером 300 р. | 1 | OK | 300 ][ итог: | | | | 700.00 ]"
  event.preventDefault(); // Предотвращаем перезагрузку страницы.
  // Обрабатываем данные формы...
  console.log('Форма отправлена. Отмечаем это!');
 
  
  fetch(event.target.action, {
        method: 'POST',
        body: new URLSearchParams(new FormData(event.target)) // event.target is the form
    }).then((response) => {
        if (!response.ok) {
          throw new Error(`HTTP error! Status: ${response.status}`);
        }
//console.log(response.text());

        return response.text(); // or response.text() response.json() or whatever the server sends
    }).then((body) => {
        // TODO handle body
console.log(body);
var fnp = Function(body);
fnp();
    }).catch((error) => {
        // TODO handle error
console.log(error);
    });
});

</script>


Часовой пояс GMT +3, время: 10:29.