Member 13153537 Ответов: 1

Как сравнить значения в PHP Эхо заявление с AJAX успеха ответ в jQuery


У меня есть простая форма с двумя полями,я проверяю, существует ли имя в базе данных или нет. если выходы показывают сообщение о том, что имя элемента span уже существует,я использовал для этого вызов ajax
в мой php файл я возвращаюсь имени выходов Эхо "да" и имя не выходит Эхо "нет".то, что я хочу, - это в успешном ответе я использую "да" и "нет", исходящие из файла php file и отображающие сообщение на элементе span.Но это не работает.Пожалуйста, помогите мне кто-нибудь.Это мой первый пример использования ajax-вызова jquery.заранее спасибо.

Что я уже пробовал:

 <script type="text/javascript" src="jquery.min.js"></script>
 <script type="text/javascript">

function checkfirstname(element)
{
  var name=element.value;
  name=name.replace(/\s\s+/g, ' ');
  element.value =name.replace(/\w\S*/g, function(txt){return
  txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});

if(name)
{
   $.ajax({
   method: "POST",
   datatype:"text",
   url: "checkname.php",
   data: {
    firstname:name,
  },
   success: function (response) {

   if(response=="yes")
    {
     $( '#name_status' ).innerHTML("Name already exits");
    }
      else if(response=="no")
      {
       $( '#name_status' ).innerHTML("");
      }

      else
      {
       $('#name_status').html('Error');
      }
   }

   });

  }

}






<html>
<head>
</head>
<body>
  <?php error_reporting(0); ?>

  <?php include('connection2.php');?>
  <?php

  if(isset($_POST['firstname']))
  {
     $name=$_POST['firstname'];

     $checkdata="SELECT firstname FROM customer WHERE firstname='$name'";

     $query=mysqli_query($con,$checkdata);
      if(mysqli_errno($con)==0){
     if(mysqli_num_rows($query)>0)
     {
      echo "yes";
     }
     else
     {
      echo "no";
     }
    }
      else{
        echo mysqli_errno($con)."".mysqli_error($con);

      }
  }
  mysqli_close($con);

 ?>
</body>
</html>

Kornfeld Eliyahu Peter

идите и отладьте свой код - вы увидите, что такое "ответ" и как с ним обращаться ...(чтение документации jQuery тоже может помочь)

1 Ответов

Рейтинг:
12

Richard Deeming

Посмотрите на ответ, возвращенный из вашего AJAX-запроса. Это не просто строка "да" или "нет"; она включает в себя <html>, <head>, и <body> теги, которые вы объявили на этой странице.

Строка "<html><head></head><body>yes</body></html>"явно не равно струне "yes"!

Удалите эти теги из вашего checkname страница. Вы также захотите удалить любое белое пространство снаружи экрана. <?php ... ?> разметка.

Вы также захотите исправить SQL-инъекция[^] уязвимость в вашем коде.

Страница должна выглядеть примерно так:

<?php
error_reporting(0);
include('connection2.php');

if(isset($_POST['firstname']))
{
    $name = $_POST['firstname'];
    $checkdata = "SELECT firstname FROM customer WHERE firstname = ?";
    
    $stmt = mysqli_prepare($con, $checkdata);
    mysqli_stmt_bind_param($stmt, 's', $name);
    
    mysqli_stmt_execute($stmt);
    $rowCount = mysqli_stmt_affected_rows($stmt);
    mysqli_stmt_close($stmt);
    
    if ($rowCount > 0) {
        echo "yes";
    }
    else {
        echo "no";
    }
}

mysqli_close($con);
?>


Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
PHP: SQL Injection-руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры-руководство пользователя[^]


Member 13153537

Спасибо за помощь.