StackOverflow を使用するのは初めてです。重要な情報を忘れていたり、質問がばかげているように聞こえたりした場合は、ご容赦ください。
ユーザーが単語を書いて「送信」ボタンを押すとリストを生成するWebサイトを構築しています。Php は、必要なデータを抽出し、それをリストとして Web ページに返す役割を果たします。
私の問題は、このデータをjs関数に渡したいということです。これに関する StackOverflow に関する多くの回答を読みましたが、コールバック関数が必要なように思えました。ただし、js 関数は、ノードが null であることを通知し続けます。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>
もちろん、ユーザーが単語を入力すると、Web ページの下部にある myFunction() を呼び出す送信ボタンです。また、リストが生成されると、Web ページに「new1」と「old1」を ID として含む div があることも確認しました (これらは、php コードによって生成されます)。
どんな助けでも本当に感謝します! 全部試した感じ!
ありがとうございました!:)