2016-10-05 32 views
0

私のjavascript:PHPスクリプトは、AJAX呼び出しに予期しない値を返します

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関数を使ってテストしました。 どこにエラーがありますか?

+0

ちょうど 'は$ RESエコーん;'その後、アヤックスに 'データ型を持っている:あなたはヒアドキュメントを使用している – guradio

+0

「テキストを」、' JSONが出力される前に出力しますか? – adeneo

答えて

0

stristr($fila["autor"], $nuevo)は、$ nuevoと$ fila ['author']が等しい場合、コード内ではfalseに相当します。

にその代わりにあなたは、明示的false値をチェックする必要があります。

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

しかし、問題は、値( 'verdadero'や 'falso')が返されないということです。 「FIN」のみ。 – Carolus

関連する問題