Ajax не проходит POST - PullRequest
       7

Ajax не проходит POST

1 голос
/ 21 апреля 2020

У меня есть форма, и мне нужно отправить данные в файл. php. Я должен передать содержимое двух полей выбора, названных select_1 и select_2. У моей кнопки fiire есть вызов onclick = 'go ()'.

Мой код сценария выглядит следующим образом:

function go() {
var sel_1 = document.getElementById('select_1').value;
var sel_2 = document.getElementById('select_2').value;
$.ajax({
    type: "POST",
    url: "compute.php",
    data: "select_1=" + sel_1 + "&select_2=" + sel_2,
    dataType: "text",
    success: function(data,status)
      /* ------------ for debug I have an alert with a response ---- */
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      },
    error: function(data,status)
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      }
    });
}

На стороне php мои вычисления. php Файл имеет следующий код:

$selection_1 = $_POST["select_1"];
$selection_2 = $_POST["select_2"];

$sqladd = "INSERT INTO table SET column_1 = '$selection_1', column_2 = '$selection_2';";
if (mysqli_query($conn, $sqladd)) {
   $resultadd= mysqli_query($conn, $sqladd);
   // ------- then for debug purpose
   echo "inserted row with col_1 --->" . $selection_1 . "<--- and col_2 --->" . $selection_2;
} else {
   // ------- either, still for debug purpose
   echo "not inserted. ";
   echo "Error: " . mysqli_error($conn);
}

Теперь в окне предупреждения показано, что js правильно получил значения двух полей выбора, и я также получаю статус успеха, но моя отладка эхо от вычисления. php показывает пустые значения для selection_1 и selection_2 , и строка таблицы вставляется, но в вставленной строке столбцы таблицы пусты . Apache журнал показывает два уведомления: PHP Примечание: неопределенный индекс: select_1 при вычислении. php и PHP Примечание: неопределенный индекс: select_2 при вычислении. php. Таким образом, PHP не получает два значения POST. Что я делаю неправильно? У меня есть следующие правила и условия в .htaccess:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.php [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]

Могут ли они заблокировать POST? Если да, как я могу получить тот же результат, не блокируя POST? Мне нужно внешне перенаправить /dir/foo.php в / dir / foo и внутренне перенаправить / dir / foo в /dir/foo.php.

Ответы [ 5 ]

0 голосов
/ 22 апреля 2020

POST был заблокирован инструкциями .htaccess, как указано выше. Изменено, и теперь POST работает с html, но все еще возникают проблемы с настройкой js / ajax / jquery для публикации моих данных для вычисления. php

0 голосов
/ 21 апреля 2020

Ваше поле выбора должно блокироваться таким образом

<select id="select_1">
<option></option></select>
</select>

Я думаю, что выбранные вами поля называются select_1 и select_2, но вы должны установить id , а не имя.

пс, если вы используете идентификатор, пожалуйста, вставьте html код.

0 голосов
/ 21 апреля 2020
function go() {
var sel_1 = $('#select_1').val();
var sel_2 = $('#select_2').val();
$.post("compute.php", {
    select_1 : sel_1,
    select_2 : sel_2
    }, function (answ) {
    console.log(answ);
  });
}
0 голосов
/ 21 апреля 2020

Измените ваш объект данных в ajax из go данных функции: {"select_1": sel_1, "select_2": sel_2}

0 голосов
/ 21 апреля 2020

Попробуйте изменить функцию go так:

function go() {
var sel_1 = document.getElementById('select_1').value;
var sel_2 = document.getElementById('select_2').value;
$.ajax({
    method: "post",
    url: "compute.php", 
    data: {"select_1":sel_1 , "select_2":sel_2},
    success: function(data,status)
      /* ------------ for debug I have an alert with a response ---- */
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      },
    error: function(data,status)
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      }
    });
}
...