2016-07-15 19 views
0

Hallo also ich habe diese beiden Funktionen, die get() ist eine benutzerdefinierte AJAX-Anfrage-Funktion, und Sie können sehen, dass es zwei Parameter URL funktioniert gut, aber die Funktion, die der Callback scheint nicht zu ändern Func (ServerResponse); zu was document.write(serverResponse);. Ich fragte mich, was um alles in der Welt mache ich falsch? Es wäre toll, wenn einer der netten Entwickler von StackOverflow mir wirklich bald helfen könnte. Vielen Dank :) Ändern Callback-Funktion Name

function get(url, func) { 
      var xhReq = new XMLHttpRequest(); 
      xhReq.open("GET", url, false); 
      xhReq.send(null); 
      var serverResponse = xhReq.responseText; 
      func(serverResponse); // Shows "15" 
     } 

     get('ip.php', 'document.write'); 
+1

Synchron Ajax ist ein Gräuel – adeneo

+2

A. Warum verwenden Sie 'document.write'? B. Sie übergeben eine Zeichenfolge, keine Funktion. C. Wahrscheinlich müssen Sie 'document.write.bind (document)' verwenden. – nnnnnn

+0

Nun, ich brauche es irgendwie, weil ich nicht eine API von Drittanbietern verwenden werde, um Benutzer-IP-Adresse zu erhalten. Weil ich meine eigenen benutzen möchte. Da ich bereits alles funktioniert habe, brauche ich nur dieses Teil zu arbeiten –

Antwort

1
get('ip.php', 'document.write'); 

sein sollte:

get('ip.php', document.write.bind(document)); 

Erstere eine Zeichenfolge übergibt; Letzteres hat eine Funktion.

Vielleicht ein typischer Weg, um diese Art der Sache zu tun:

get('ip.php', function (text) { 
    document.write(text); 
}); 
+0

Es muss "document.write.bind (document)" sein. – nnnnnn

+0

@nnnnnn Danke! Ich glaube, du hast Recht. – smarx

+0

Danke! Das hat funktioniert, ich werde deine Antwort annehmen, sobald die 8 Minuten abgelaufen sind :) –