Tokishu
@Tokishu
Что?

Как исправить ошибку в передаче данных AJAX -> PHP?

У меня появилась проблема.
есть вот такой код
<script>

                    var input = document.getElementById('input');
                    var cardname = $("#cardname").val();
                    input.oninput = function() {
                      document.getElementById('title').innerHTML = input.value;
                      document.getElementById('sms').innerHTML = "Нажмите Enter для подтверждения названия";  
                  };

                  $(document).ready(function() {
                      $('#f1').submit(function(e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: 'scripts/name.php',
            // data: $(this).serialize(),
            cache: false,
            dataType:'html',
            data: { 'cardname': cardname },
            beforeSend: function(){
              $("#sms").text("Подождите...");
              $("#input").prop("disabled", true);
            },
            
            success: function(response){
                var jsonData = JSON.parse(response);
                
                // user is logged in successfully in the back-end
                // let's redirect
                console.log(jsonData.success);
                if (jsonData.success == "1") {
                                  $("#sms").text("Имя карточки обновлено!");
                                  $("#input").prop("disabled", false);
                }else if (jsonData.success == "3")
                {
                  $("#sms").text("Хей, нельзя такое вводить!");
                  $("#input").prop("disabled", false);     
                }else{
                  $("#sms").text("Что-то пошло не так...");
                  $("#input").prop("disabled", false);
                }
           }
       });
     });
});


                    </script>


и у меня ошибка в том что когда я пишу название и нажимаю Enter тогда у меня останавливается все на "Подождите..."
В ошибках это
unknown.png

Что делать не знаю, попробовал все что мог, в итоге пришел к заключению что оно просто не может записать в переменную данные.
так как PHP жалуется на:
Notice: Undefined index: cardname in /home/Секрет/domains/Секрет/public_html/usr/scripts/name.php on line 42

а на линии 42 у меня это
$nnnn = $_POST['cardname'];

Вот полный код
<?php

// require_once 'header.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
require "../../discord/functions.php";
require "../../discord/discord.php";
require "../../config.php";
require "../../core/connects.php";
$auth_url = url($client_id, $redirect_url, $scopes);
$a = $_SESSION['user_id'];
$usrd = mysqli_query($connect, "SELECT * FROM `users` WHERE `did` = '$a'");
$cardi = mysqli_query($connect, "SELECT * FROM `cards` WHERE `owner` = '$a'");
$result1 = mysqli_fetch_assoc($usrd);
$cardi = mysqli_fetch_assoc($cardi);
$server = mysqli_connect('NaN', 'NaN', 'NaN', 'NaN');
if (!$server) {
          $_SESSION['err'] = "База данных сервера недоступна";
          header("Location: ../../pages/err/400bd.php");
          exit();
    }


$result = mysqli_query($connect, "SELECT * FROM `users` WHERE `did` = '$a'");
if (!isset($_SESSION['user'])) {
header("Location: ../");
exit( );
}
if (mysqli_num_rows($result) > 0){
$status_check = mysqli_query($connect, "SELECT * FROM `users` WHERE `did` = '$a' AND `status` = '2'");
$status_check_one = mysqli_query($connect, "SELECT * FROM `users` WHERE `did` = '$a' AND `status` = '1'");
if (mysqli_num_rows($status_check_one) > 0){
  header("Location: ../pages/err/403.html");
  exit(); 
}elseif (mysqli_num_rows($status_check) == 0){
  header("Location: ../pages/verify.html");
  exit();
  }
}


$nnnn = $_POST['cardname'];
echo $nnnn;
$namee = $result1 ['name'];

if (preg_match("/Test abeme/", $nnnn)) {
 $response['success'] = "3";
 $status_check = mysqli_query($connect, "INSERT INTO `logs` (`id`, `owner`, `text`) VALUES (NULL, '$a', 'Пользователь $namee попытался вставить банворд SQL')");
 echo json_encode($response);
}else{
$games = mysqli_query($connect, "UPDATE `cards` SET `cardname` = '$nnnn' WHERE `owner` = '$a'");
if (!$games){
 $response['success'] = "12";
 echo json_encode($response);
}
 
}


?>


Прошу не обращать внимание на то что я не обезопасил код, буду благодарен за ответ.
Возможно я тупой и пропустил где-то ;.
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Ну во-первых, вы берёте значение из $("#cardname") не во время вызова AJAX, а в момент загрузки страницы. Что там пользователь вводил - в переменную cardname уже не попадёт.

Во-вторых проверить прилёт POST запроса в скрипт - религия не позволяет? Простейший var_dump($POST); первой строчкой скрипта - и вопрос снят!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы