Поля данных запроса AJAX "undefined" из отправки веб-формы - PullRequest
0 голосов
/ 03 апреля 2019

Я настраиваю веб-страницу, на которой будут храниться ответы пользователей из формы в документе листов Google. После отправки формы выполняется запрос AJAX, который изменяется для заполнения полей в скрипте Google. Поля данных в запросе отображаются как неопределенные как в листе Google, так и в сгенерированном ответе.

Я знаю, что соединение установлено успешно, поскольку "неопределенные" значения заполняют ячейки листов Google.

JS показано ниже.

<html>

<head>
  <script src="jquery-3.3.1.min.js"></script>

  <script>
    var script_url = "https://script.google.com/macros/s/AKfycbzfVIP99UG7NK9kD94zptKJeEBhP9qWDsuFVfrOAerK6Hg-EUw-/exec";

    function insert_value() {
      var id1 = $("#id").val();
      var name = $("#name").val();
      var url = script_url + "?callback=ctrlq&name=" + name + "&id=" + id1 + "&action=insert";
      var request = jQuery.ajax({
        crossDomain: true,
        url: url,
        method: "get",
        dataType: "json"
      });
    }

    function ctrlq(e) {
      alert('Congrats! Registered Successfully')
    }
  </script>
</head>

<body>
  <form autocomplete=off action="javascript:;" id="resetForm" onsubmit="insert_value()">
    ID : <input type="text" class="id" name="id"><br> First name: <input type="text" class="name" name="name"><br>
    <input type="submit" value="Send form data!">
  </form>

</body>

</html>

Вот сгиб, созданный для запроса:

"https://script.google.com/macros/s/AKfycbzfVIP99UG7NK9kD94zptKJeEBhP9qWDsuFVfrOAerK6Hg-EUw-/exec?callback=ctrlq^&name=undefined^&id=undefined^&action=insert" -H" Принять: application / json, текст / javascript, / ; q = 0,01 "-H" Происхождение: null "-H" Пользователь-агент: Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537,36 (KHTML, как Gecko) Chrome / 73.0.3683.86 Safari / 537.36 "- сжат

Я не уверен, почему они не определены, так как значения явно передаются в URL через js.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

<html>

<head>
  <script src="jquery-3.3.1.min.js"></script>

  <script>
    var script_url = "https://script.google.com/macros/s/AKfycbzfVIP99UG7NK9kD94zptKJeEBhP9qWDsuFVfrOAerK6Hg-EUw-/exec";

    function insert_value() {
      var id1 = $("#id").val();
      var name = $("#name").val();
      var url = script_url + "?callback=ctrlq&name=" + name + "&id=" + id1 + "&action=insert";
      var request = jQuery.ajax({
        crossDomain: true,
        url: url,
        method: "get",
        dataType: "json"
      });
    }

    function ctrlq(e) {
      alert('Congrats! Registered Successfully')
    }
  </script>
</head>

<body>
  <form autocomplete=off action="javascript:;" id="resetForm" onsubmit="insert_value()">
    ID : 
    <input type="text" id="id" name="id">
    <br> 
    First name: 
    <input type="text" id="name" name="name">
    <br>
    <input type="submit" value="Send form data!">
  </form>

</body>

</html>

Вместо присвоения имен классов элементам ввода, укажите Id.Идентификатор - это не что иное, как уникальный атрибут для каждого элемента.Это должно быть уникальным.

Также я изменил атрибут класса на id.Теперь он должен работать как положено.

0 голосов
/ 03 апреля 2019

Здравствуйте, вы не можете сказать, что мое соединение успешно, потому что я получаю неопределенные значения> это ложно, так как вы все равно получите неопределенные значения.

То, что вы пропустили здесь, это отправить ваш запрос после обновления формы, а не при инициализации (это то, что вы делаете здесь)

Вы должны инкапсулировать свою функцию в некой функции готовности документа jquery https://learn.jquery.com/using-jquery-core/document-ready/ Или просто убедитесь, что ваша переменная обновлена ​​перед отправкой;)

...