2016-07-15 4 views
0

Привет, поэтому у меня есть эти две функции, которые get() - это пользовательская функция запроса ajax, и вы можете видеть, что у нее есть два параметра: url работает нормально, но функция func, которая является обратным вызовом, не изменяет func (serverResponse); к чему document.write(serverResponse);. Поэтому мне было интересно, что я делаю неправильно? Было бы здорово, если бы один из разработчиков на StackOverflow мог помочь мне в самом деле в ближайшее время. Огромное спасибо :) Изменение имени функции обратного вызова

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

Синхронный Аякса является мерзостью – adeneo

+2

A. Почему вы используете 'document.write'? B. Вы передаете строку, а не функцию. C. Вероятно, вам нужно использовать 'document.write.bind (document)'. – nnnnnn

+0

хорошо, мне это нужно, потому что я не буду использовать сторонний api, чтобы получить IP-адрес пользователя. Потому что я хотел бы использовать свои собственные. Поскольку у меня уже есть все, что мне нужно, мне просто нужно, чтобы эта часть работала –

ответ

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

должно быть:

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

Бывший передает строку; последняя передает функцию.

Возможно, более типичным способом сделать такую ​​вещь:

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

Это должно быть 'document.write.bind (document)'. – nnnnnn

+0

@nnnnnn Спасибо! Я верю, что ты прав. – smarx

+0

Спасибо! Это сработало, я приму свой ответ, как только 8 минут закончится :) –

Смежные вопросы