2016-05-17 17 views
0

Ich habe alle SO-Antworten gelesen und sie scheinen einen Event-Handler einzubeziehen, was bei meiner Situation nicht der Fall ist.Warum wird jQuery ajax zweimal ausgeführt?

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

userid = 52 username = ront userid aus storage = 52

userid = 52 username = ront benutzer- ID aus Speicher = 52

+0

Warum ist Funktionserfolg (Ergebnis) {'in dom ready handler? –

+0

es wäre egal, ob es ist oder nicht, da es an Ajax-Funktion übergeben wird – nuway

Antwort

0

Ich hatte das Problem zuvor, wo es scheint, dass es wegen zwei Konsoleneinträge zweimal gesendet wird, aber wenn Sie die Registerkarte Netzwerk überprüfen, gibt es nur eine Anfrage.

Versuchen Sie, auf die Registerkarte Netzwerk zu gehen, löschen Sie alles mit dem roten Kreis/Schrägstrich oben links und lösen Sie die Anfrage erneut aus, um zu sehen, ob zwei Einträge angezeigt werden.

Verwandte Themen