Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组推送以正确存储_Javascript_Html_Ajax_Loops_For Loop - Fatal编程技术网

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循环执行期间、发布前和发布后都使用控制台log
    scoreArray