私は非常に単純なことをしようとして非常に苦労しています。コードは次のとおりです。
if(data == 'success') {
alert('foo');
} else {
alert(data);
}
簡略化しましたが、何が起こっているのかを理解するために必要なのはそれだけです。変数「data」はAJAX呼び出しの結果であり、違いが生じた場合。問題は、常に「else」ステートメントに移動し、「success」を警告することです。 'else'に行く場合は、すべきではありません。ここで何が起こっているのでしょうか。
編集:これがjQueryの完全なAJAXコードです:
$.post("/manage_sites.php", {before:before, edit:after}, function(data){
if(data == success) {
alert('blah');
} else {
alert(data);
}
});
そして、PHP応答:
...code....
$update = mysql_query("UPDATE users SET feeds = '$afterFeed' WHERE username = '$name'") or die("Query Failed");
if($update) {
echo 'success'; //this is the 'string' that is being given to 'data'
}
$.trim()
を使用して、クライアント側で次のように修正できます。
if($.trim(data) == 'success') {
または、より良いアプローチは、サーバー側からの改行を削除することです。おそらく、PHPのどこかにある誤った改行、<? ?>
ブロックの前後を確認してください。 、これはほとんどの場合、それらが発生する場所です。
または、次のように、コンテンツを出力した後に終了します。
if($update) {
echo 'success';
exit();
}
クライアント側の検証は正常に機能しています。
$.trim() fine.
ニックありがとう。なぜ機能しないのか理解するのに時間がかかりました...
ファイルの最後の行である場合は、ファイルの末尾の?>を削除できます。元の問題へのコメントに返信したいのですが、方法がわかりません。