PHP脚本向AJAX调用返回一个意外值


PHP script returns an unexpected value to the AJAX call

我的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 "answers" falso "。我还使用$.get jQuery函数进行了测试,结果同样糟糕。错误在哪里?

如果$nuevo和$fila['author']相等,则stristr($fila["autor"], $nuevo)将返回"0",这在您的代码中相当于false

相反,您需要显式检查false值,如:

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