Javascript数组推送以正确存储
我的程序:使用选择选项和文本字段创建测试。每次为拾取点数添加问题时,将输入文本字段 我在函数外有一个数组,我想用Javascript数组推送以正确存储,javascript,html,ajax,loops,for-loop,Javascript,Html,Ajax,Loops,For Loop,我的程序:使用选择选项和文本字段创建测试。每次为拾取点数添加问题时,将输入文本字段 我在函数外有一个数组,我想用分数填充它 在我的for循环中,我试图通过在文档上显示数组本身来测试它是否被填充,这样可以正常工作 我的问题:当我将数据发送到php文件并回显内容时。。。scoreArray突然变空。我不明白为什么,因为它在HTML上正确显示,但是从php文件返回的信息不见了。。就像我在for循环之后意外清空了数组,这对我来说没有意义 var testArray=[]; var scoreArray=
分数填充它
在我的for循环
中,我试图通过在文档上显示数组
本身来测试它是否被填充,这样可以正常工作
我的问题:当我将数据发送到php文件并回显内容时。。。scoreArray
突然变空。我不明白为什么,因为它在HTML
上正确显示,但是从php文件返回的信息不见了。。就像我在for循环之后意外清空了数组,这对我来说没有意义
var testArray=[];
var scoreArray=[];
函数examAdd(){
var ajaxRequest=new-XMLHttpRequest();
ajaxRequest.onreadystatechange=函数(){
if(ajaxRequest.readyState==4){
var ajaxDisplay=document.getElementById('ajaxDiv');
var res=ajaxRequest.innerHTML=this.responseText;
var data=JSON.parse(res);
警报(this.responseText);
对于(i=1;i<21;i++){
var theID=document.getElementById(“q”+i).value;
scoreArray.push(theID);
document.getElementById(“考试”).innerHTML=“问题数组:”+testArray+“| |分数数组:”+scoreArray;
}
}
}
var topics=document.getElementById(“qTopic”).value;
var关键字=document.getElementById(“qKeyword”).value;
var testname=document.getElementById(“eName”).value;
var myObj={
id:“addt”,
测试:testArray,
分数:分数数组,
主题:主题,,
关键词:关键词,
tname:testname
};
var myJSON=JSON.stringify(myObj);
var myJSON2=JSON.stringify(scoreArray);
open(“POST”,“examtest.php”,true);
//ajaxRequest.open(“POST”https://web.njit.edu/~rtw3/CS490/betamiddle.php”,真实);
ajaxRequest.send(myJSON);
}
试验
这是使用此代码显示的工作流:
用户输入测试名称并按[Create]-->运行examAdd()
examAdd()
创建XML对象并设置readystate
处理程序
examAdd()
为主题、关键字、testname创建三个变量,其中包含值
examAdd()
创建并stringifies
和对象文本myObj
examAdd()
打开XHR请求
examAdd()
发送数据
examAdd()
在readystate 4
examAdd()
如果这是您的意图,scoreArray
只能在少数情况下为空。这里的疑点是ID为q1
到q20
的元素在DOM上不存在,或者如果它们存在,则它们不是HTMLInputElement
s,并且它们没有值
属性
要测试这一点,console在循环中记录ID的值以进行验证。如果将数据发布到服务器,当页面响应首次加载时,是什么重新创建了scoreArray
?在examAdd
中的每个Ajax请求中,服务器上的数据是如何持久化的?您没有应该发出的请求的url。发布请求时会发生什么情况,页面是否重新加载,控制台是否记录了任何变量?我建议您在for循环执行期间、发布前和发布后都使用控制台logscoreArray
。