【发布时间】:2019-03-10 21:09:26
【问题描述】:
我的程序:使用选择选项和文本字段创建测试。每次添加问题以选择分数时,都会输入文本字段。
我在函数之外有一个数组,我想用scores 填充。
在我的for loop 中,我尝试通过在文档上显示array 本身来测试它是否被填充,这可以正常工作。
我的问题:当我将数据发送到 php 文件并回显内容时...scoreArray 突然为空。我不知道为什么,因为它在HTML 上正确显示,但从 php 文件收到的信息消失了。就像我在 for 循环之后不小心清空了数组,这对我来说没有意义。
var testArray = [];
var scoreArray = [];
function examAdd() {
var ajaxRequest = new XMLHttpRequest();
ajaxRequest.onreadystatechange = function() {
if (ajaxRequest.readyState == 4) {
var ajaxDisplay = document.getElementById('ajaxDiv');
var res = ajaxRequest.innerHTML = this.responseText;
var data = JSON.parse(res);
alert(this.responseText);
for (i = 1; i < 21; i++) {
var theID = document.getElementById("q" + i).value;
scoreArray.push(theID);
document.getElementById("exam").innerHTML = "Question Array: " + testArray + " || Scores Array: " + scoreArray;
}
}
}
var topics = document.getElementById("qTopic").value;
var keywords = document.getElementById("qKeyword").value;
var testname = document.getElementById("eName").value;
var myObj = {
id: "addt",
test: testArray,
scores: scoreArray,
topic: topics,
keyword: keywords,
tname: testname
};
var myJSON = JSON.stringify(myObj);
var myJSON2 = JSON.stringify(scoreArray);
ajaxRequest.open("POST", "examtest.php", true);
//ajaxRequest.open("POST","https://web.njit.edu/~rtw3/CS490/betamiddle.php", true);
ajaxRequest.send(myJSON);
}
<div id="testLayout">
<h4>Test</h4>
<center>
<ol id="test">
</ol>
</center>
</div>
<input type="text" name="eName" id="eName" placeholder="Enter Test Name"><br><br>
<div class="button">
<input type="button" value="Create" onclick="examAdd();">
<input type="button" value="Cancel" onclick="cancel();">
</div>
【问题讨论】:
-
如果您将数据发布到服务器,当页面响应首次加载时会重新创建
scoreArray?examAdd中的每个 Ajax 请求将数据保存在服务器上的原因是什么?您没有应该发出的请求的 url。 -
当您发布请求时会发生什么,您的页面是否重新加载,您是否在控制台记录了任何变量?我建议您在 for 循环执行期间、发布之前和之后控制台日志
scoreArray。
标签: javascript html ajax loops for-loop