2016-05-17 20 views
0

私はすべてのSOの回答を読みましたが、私の状況には当てはまらないイベントハンドラが関わっているようです。jQuery ajaxが2回実行されているのはなぜですか?

JS

$(function() { 
    var data = {}; 
    data.action = "getUser" 
    ajax('post', 'php/login.php', data, success, "Initialization error: ", 'json', false); 
    function success(result) { 
     if (result) { 
      var data = {}; 
      window.localStorage.setItem("user-id", result.userid); 
      console.log("userid=" + result.userid); 
      console.log("username=" + result.username); 
      console.log("user-id from storage=" + window.localStorage.getItem("user-id")); 
     } else { 
      var msg = "Welcome to the Writer's Tryst. Create an account to participate as a writer or enabler."; 
      showMessage(1, msg); 
      console.log(msg); 
     } 
    } 
}) 
function formatError(errmsg, err, xhrmsg) { 
    return errmsg + (err.length ? err + " " : '') + (xhrmsg.length ? xhrmsg : ''); 
} 
function ajax(method, url, data, success_callback, errmsg, dataType, cache, processData, contentType) { 
    cache = typeof cache !== 'undefined' ? false : true; 
    processData = typeof processData !== 'undefined' ? false : true; 
    contentType = typeof contentType !== 'undefined' ? false : "application/x-www-form-urlencoded; charset=UTF-8"; 
    dataType = typeof dataType !== 'undefined' ? dataType: 'text'; 
    $.ajax({ 
     type: method, 
     url: url, 
     data: data, 
     cache: cache, 
     processData: processData, 
     contentType: contentType, 
     dataType: dataType 
    }).done(function (result, success, xhr) { 
     success_callback(result); 
    }).fail(function (xhr, desc, err) { 
     var msg = formatError((errmsg ? errmsg : ""), err, xhr.responseText); 
     showMessage(0, msg); 
     console.log(msg); 
    }); 
} 
function showMessage(errorType, msg) { 
    switch (errorType) { 
     case 0: 
      $("#message").text(msg).css({ 'color': 'white', 'background-color': 'red', 'display': 'block' }); 
      break; 
     case 1: 
      $("#message").text(msg).css({ 'color': 'white', 'background-color': 'green', 'display': 'block' }); 
      break; 
     default: 
      $("#message").text(msg).css({ 'color': 'white', 'background-color': 'orange', 'display': 'block' }); 
      break; 
    } 
    $('html, body').animate({ scrollTop: 0 }, 'fast'); 
} 
$(document).on("keypress click", function(){$("#message").css({'display': 'none'})})  

にconsole.log

ユーザーID = 52名=ストレージからrontユーザーID = 52

ユーザーID = 52名= ront USER-ストレージからのID = 52

+0

dom readyハンドラで 'function success(result){'はなぜですか? –

+0

ajax関数に渡されるので、それが重要かどうかは関係ありません – nuway

答えて

0

2つのコンソールエントリのために2回送信されているように見える前に問題が発生しましたが、ネットワークタブを確認すると1つの要求しかありません。

[ネットワーク]タブに移動し、左上の赤い丸/スラッシュボタンですべてをクリアしてから、もう一度リクエストをトリガーして2つのエントリが表示されるかどうかを確認してください。

関連する問題