Это мой первый раз на StackOverflow, пожалуйста, простите меня, если я забуду какую-то важную информацию или если мой вопрос звучит глупо!Функция обратного вызова ajax пуста
Я создаю веб-сайт, который генерирует список, как только пользователь записывает слово и нажимает кнопку «Отправить». Php отвечает за извлечение необходимых данных и возврат их на веб-страницу в виде списка.
Моя проблема заключается в том, что я хочу передать эти данные в функцию js. Я прочитал много ответов на StackOverflow об этом, и это звучало как функция обратного вызова - это то, что мне нужно. Однако моя функция js продолжает говорить мне, что мой узел равен нулю; кажется, данные, возвращенные из ajax, не учитываются.
Вот некоторые части моего кода:
<script>
var xmlhttp;
function loadXMLDoc(cfunc){
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var us = document.getElementById("user").value;
var ur = document.getElementById("wiki").value;
xmlhttp.onreadystatechange = cfunc;
xmlhttp.open("GET","contributions_old.php?user="+us+"&wiki="+ur+"",true);
xmlhttp.send();
}
function myFunction() {
loadXMLDoc(function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("result").innerHTML=xmlhttp.responseText;
var parser = new DOMParser();
var responseDoc = parser.parseFromString (xmlhttp.responseText, "text/html");
var text1 = responseDoc.getElementById('old1').value;
var text2 = responseDoc.getElementById('new1').value;
var dmp = new diff_match_patch();
dmp.Diff_Timeout = 0;
// No warmup loop since it risks triggering an 'unresponsive script' dialog
// in client-side JavaScript
var ms_start = (new Date()).getTime();
var d = dmp.diff_main(text1, text2, false);
var ms_end = (new Date()).getTime();
var ds = dmp.diff_prettyHtml(d);
document.getElementById('outputdiv').innerHTML = ds + '<BR>Time: ' + (ms_end - ms_start)/1000 + 's';
}
});
}
</script>
Это, конечно, Отправить кнопка, которая вызывает MYFUNCTION() в нижней части моей веб-странице после того, как пользователь ввел слово. Я также подтвердил, что моя веб-страница после создания списка имеет div с «new1» и «old1» как идентификаторы (они генерируются через мой PHP-код).
Любая помощь была бы действительно оценена! Я чувствую, что все пробовал!
Спасибо! :)
Любая причина, по которой вы вручную записываете код AJAX, вместо того, чтобы использовать одну из многих тщательно протестированных, хорошо документированных, поддерживаемых сообществом библиотек, таких как jQuery? – webbiedave
Не вредите этому в vanila JS, особенно если вы не используете jQuery в другом месте. Вы пробовали использовать абсолютный путь к странице 'contrib_old.php'. – jmiraglia
Я получил код ajax из w3School, так как у них есть подробный учебник о том, как он работает, и я чувствовал себя более комфортно, используя его таким образом. Будет ли писать его с помощью jQuery решить мою проблему? Я думаю, что путь к contrib_old работает, так как моя страница обновляется списком, извлеченным из него? – user2600775