#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;
тогда в ajaxdataType:'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’.