3

私が持っている問題....これを行うphpにリスナースクリプトがあります:

  if ($count != 1) {echo 'no';} else { echo "yes";}

したがって、タスクが成功したかどうかに応じて「はい」または「いいえ」が表示され、私のページには次のように表示されます。

   jConfirm('Are you sure you want to delete this publisher?', 'Delete publisher', function (r) {
    if (r) $.post('includes/publishers/delete-publisher.php?publisherid=' + publisherid, 
    function(data) {
            if (data == 'no') {
            $.jGrowl('Error - PUBLISHER WAS ALREDY DELETED !');
            alert("Data Loaded: " + data);
            } else {
            $(element).parents('tr').remove();
            $.jGrowl('Publisher deleted');       
            alert("Data Loaded: " + data);
            }
        });
});

そして問題は、すべての delete-publisher.php が「いいえ」をエコーすることです (警告ボックスにエコーが表示されます) - JQuery は常に、応答が「はい」であるかのようにこれを処理します!? 明らかな何かが欠けていますか?

4

2 に答える 2

2

JSON を使用して応答を JavaScript に送り返します。このようなことをしてください(テストされていません):

PHP 側:

header('Content-type: application/json');
if ($count != 1) {
    echo json_encode(array('success'=>false));
} else { 
    echo json_encode(array('success'=>true))
}

JS 側:

jConfirm('Are you sure you want to delete this publisher?', 'Delete publisher', function (r) {
if (r) $.post('includes/publishers/delete-publisher.php?publisherid=' + publisherid, 
function(data) {
        if (data.success == false) {
            $.jGrowl('Error - PUBLISHER WAS ALREDY DELETED !');
            alert("Data Loaded: " + data);
        } else {
            $(element).parents('tr').remove();
            $.jGrowl('Publisher deleted');       
            alert("Data Loaded: " + data);
        }
    }, 'json');

});

このようにして、エラー メッセージを JS に返すこともできます。

また、Firebug for Firefox などの使用に慣れて、ネットワーク トラフィックの詳細を調べたり、パラメーターや応答ヘッダーなどを投稿したり、デバッグに役立つように JS ブレークポイントを設定したりできるようにする必要があります。

于 2012-09-21T19:40:41.263 に答える
1

応答に空白が含まれている可能性があります。代わりにこれを使用してみてください:

if ($.trim(data) == 'no') {
于 2012-09-21T19:33:07.223 に答える