2011-11-09 7 views
0

いいえ、クリックすると、指定したdivのクラスが変更されます。問題は、変数(回答)に文字列 "No"が含まれていない場合にのみ、これが発生することです。これはうまくいきますが、変数に "いいえ"という単語が含まれていなくても、コードは実行されません。 ajaxの結果には、「No User ID」または「User ID:#」のいずれかが含まれます。変数に文字列が含まれているとjQueryが実行されます

$(document).ready(function() { 

$('.like').on('click', function() { 
    postID = $(this).attr('id').replace('like_', ''); 

    // Declare variables 
    value = '1'; 

    myajax(); 

    return false; 

    var doit = answer.IndexOf("No"); 
    if (doit < 0){ 
     $('#post_' + postID).removeClass('dislike').addClass('like'); 
    } 

}); 

function myajax(){ 
    // Send values to database 
    $.ajax({ 
     url: 'check.php', 
     //check.php receives the values sent to it and stores them in the database 
     type: 'POST', 
     data: 'postID=' + postID + '&value=' + value, 
     success: function(result) { 
      answer = result; 
      $('#Message_' + postID).html('').html(result).prependTo('#post_' + postID); 
     } 
    }); 
} 
}); 

だから私の問題はvar doitにあります。私は何が間違っているのか分かりません。

答えて

3

success機能がlikeso、myajax戻り

あなたが成功関数にコードのブロック全体を移動させたいので、「」アヤックスでは、非同期の略で最初の呼び出しの後に実行されます。

$(document).ready(function() { 

$('.like').on('click', function() { 
    postID = $(this).attr('id').replace('like_', ''); 

    // Declare variables 
    value = '1'; 

    myajax(function(answer) { 
      if (answer.indexOf("No") < 0){ 
       $('#post_' + postID).removeClass('dislike').addClass('like'); 
      } 
    }); 

    return false; 

}); 

    $('.dontlike').click(function() { 
    myajax(function(answer) { alert('check.php returned:' + answer); } 
    }); 

function myajax(onSuccess){ 
    // Send values to database 
    $.ajax({ 
     url: 'check.php', 
     //check.php receives the values sent to it and stores them in the database 
     type: 'POST', 
     data: 'postID=' + postID + '&value=' + value, 
     success: function(result) { 
      $('#Message_' + postID).html('').html(result).prependTo('#post_' + postID); 
      onSuccess(result); 
     } 
    }); 
} 
}); 
+0

おそらく 'var answer = result;'は良いでしょうか?または単に 'result.indexOf(" No ")'?また、それは 'indexOf'の小文字の' i'だと思います。 –

+0

はいとはい、更新 – Jason

+0

このソリューションは動作しません。なぜなら、ajaxは関数内に存在するからです。私は同じ機能を実行するが、変数を別々に設定する別のボタン(嫌い)を持っています。 indexOfを私のAjaxの中に置くと、どのボタンがクリックされたかを区別することはできません。 – Sweepster

関連する問題