PHP-скрипт возвращает неожиданное значение вызову AJAX

#javascript #php #jquery #ajax

#javascript #php #jquery #ajax

Вопрос:

Мой javascript:

 nombre = window.prompt('Escribe el nombre del autor/artista/letrista:','');
    if(nombre != ''){
      $.ajax({
          url: "admin/nuevo_autor.php",
          type: "POST",
          data: {autor: nombre},
          success: function (res) {
              alert(res);
              if(res=='verdadero'){
                  var opt = document.createElement('option');
                  opt.text = nombre;
                  opt.selected = true;
                  sel.add(opt);
              }
              return true;
          }
      });
    }
  

Вызывает ‘nuevo_autor.php ‘:

 <?php
$nuevo = $_POST["autor"];
require("../includes/database.php");

$select = <<<EOT
SELECT * FROM autor
WHERE 1
EOT;
$resultado = $mysqli->query($select);
$res = "verdadero";
for($i=0;$i<$resultado->num_rows; $i  ){
    $fila = mysqli_fetch_array($resultado, MYSQLI_ASSOC);
    if(stristr($fila["autor"], $nuevo)) {
        $res = "falso";
        break;
    }
}
echo json_encode($res);
?>
  

Предупреждение Javascript показывает: FIN (по-испански: END). Ни ‘verdadero‘, ни ‘falso‘.
Я также тестировал с использованием функции $.get jQuery с тем же плохим результатом.
Где ошибка?

Комментарии:

1. просто сделайте echo $res; тогда в ajax dataType:'text',

2. Вы используете вывод heredoc перед выводом JSON?

Ответ №1:

stristr($fila["autor"], $nuevo) вернет «0», если $nuevo и $fila[‘author’] равны, что в вашем коде будет эквивалентно false .

Вместо этого вам нужно явно проверить false значение, как в:

 if(stristr($fila["autor"], $nuevo) !== false) {
    $res = "falso";
    break;
}
  

Комментарии:

1. Возможно, но проблема в том, что значение (‘verdadero’ или ‘falso’) не возвращается. Только ‘FIN’.