2017-03-17 8 views
1

私はajaxを使ってPHPでMySQLデータベースにデータを挿入しています。データがデータベースに正常に挿入されると、条件を使用してアラートをトリガーします。jQueryの条件が機能しないのはなぜですか?

jqueryの私の状態がうまくいかない理由がわかりません。物事のPHP側は正常に動作しており、私がalert()に見ることができる「成功」応答を返しますが、条件を使用した場合は返されません。 うまくいけば、誰かが私が間違っていたことを私に見せることができます、ありがとう。

jqueryの

submitHandler: function (form) { 

var formdata = $("#edit_post").serialize(); 
    $.post('edit_upload.php', formdata, 
      function(data){ 

      if(data =="success"){ //alert if records inserted 
      alert(data); 
    } 
}); 
return false; 
} 

edit_upload.php

//Update Database 
$stmt = $db_conx->prepare('UPDATE tbl_uploads SET title=?, detail=? WHERE id=?'); 
$stmt->bind_param('sss',$title,$detail,$id); 
$stmt->execute(); 

if ($stmt->execute()) { //true 
echo 
     'success'; 
} 

else{ echo "error"; } 
+1

'if(data.trim()==" success ")'を試してみるか、JSONでブール値を返す方が良い –

+2

ブラウザに組み込まれているデバッガを使って 'if(data ==" success " ) '行に、' data'変数の内容を見て、見つけてください。おそらく、文字列の片方または両方に空白があります。 –

+0

デベロッパーコンソール(通常はF12)を開いて、実際に何が起きているのかを判断するために、応答の実際の内容についてネットワークトラフィックを確認します。 – apokryfos

答えて

2

それは問題が返された文字列に追加されているいくつかの空白によって引き起こされている可能性が高いです。あなたはtrim()を使用してこれを削除することができます

$.post('edit_upload.php', formdata, function(data) { 
    if (data.trim() == 'success') { 
    console.log(data); 
    } 
}); 

それははるかに良い練習すること、およびはるかに少ないエラーが発生しやすく、このように、JSONを経由してブール値を返すようになり、そのかかわらず、あなたは注意する必要があります。

$stmt = $db_conx->prepare('UPDATE tbl_uploads SET title=?, detail=? WHERE id=?'); 
$stmt->bind_param('sss', $title, $detail, $id); 
echo json_encode(array('success' => $stmt->execute()); 
$.post('edit_upload.php', formdata, function(data) { 
    if (data.success) { 
    console.log(data); 
    } 
}); 
+0

トリムはトリックでした。ありがとうございました。 – JulianJ

関連する問題