Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 - Fatal编程技术网

访问Javascript中的参数

访问Javascript中的参数,javascript,Javascript,我对JS有一个奇怪的问题(可能是一个noob bug),但我一直在坚持 在函数fillInVersionsList中,如果我输入警报(“tempo”)或firebug中断,我可以访问参数中的数据(即:警报(pSimulator.simulatorData['LastVersion'))我得到了正确的结果。问题是,如果我在访问数据之前没有设置警报/firebug中断,我会出现JS错误pSimulator.Simulator数据未定义 $(document).ready(function() {

我对JS有一个奇怪的问题(可能是一个noob bug),但我一直在坚持

在函数
fillInVersionsList
中,如果我输入
警报(“tempo”)
或firebug中断,我可以访问参数中的数据(即:
警报(pSimulator.simulatorData['LastVersion'))
我得到了正确的结果。问题是,如果我在访问数据之前没有设置警报/firebug中断,我会出现JS错误
pSimulator.Simulator数据未定义

$(document).ready(function() {

    var simulator = new Simulator();

    // Load SimulatorData into the simulator class
    initSimulatorData(simulator);
    // Fill in datas into VersionsList (2nd arg = Id of the list)
    fillInVersionsList(simulator, $('#VersionsList'));  


});

function initSimulatorData(pSimulator)
{
    $.ajax({
      url: "getData.php?action=init",
      success: function(data) {
          pSimulator.initSimulatorData(data);
        }

    });

}


function fillInVersionsList(pSimulator, pSelect)
{
    //alert("tempo");
    alert(pSimulator.simulatorData['LastVersion']);

    pSelect.html('<option>test</option>')       

}

function Simulator()
{

    var simulatorData;


    this.initSimulatorData = function(pSimulatorData)
    {
        this.simulatorData = pSimulatorData;    
    }




}
$(文档).ready(函数(){
var模拟器=新模拟器();
//将模拟器数据加载到模拟器类中
initSimulatorData(模拟器);
//将数据填入VersionsList(第二个参数=列表的Id)
fillInVersionsList(模拟器,$(“#版本列表”);
});
函数initSimulatorData(pSimulator)
{
$.ajax({
url:“getData.php?action=init”,
成功:功能(数据){
pSimulator.initSimulatorData(数据);
}
});
}
函数fillInVersionsList(pSimulator、pSelect)
{
//警觉(“节奏”);
警报(pSimulator.simulatorData['LastVersion']);
html('test')
}
函数模拟器()
{
var模拟数据;
this.initSimulatorData=函数(pSimulatorData)
{
this.simulatorData=pSimulatorData;
}
}
有什么办法解决这个问题吗


提前感谢

我怀疑
initSimulatorData
正在异步加载一些数据

添加
警报
会使其足够长,以便加载数据

您需要添加某种回调函数,例如:

initSimulatorData(simulator, function () {
    // Fill in datas into VersionsList (2nd arg = Id of the list)
    fillInVersionsList(simulator, $('#VersionsList'));  
});

从您的问题来看,模拟器需要时间来初始化,而当FillInversionList被称为pSimulator时,仍然没有完全初始化

当您发出警报时,它会得到一些时间延迟,时间模拟器将由此初始化

在模拟器完全初始化后,检查是否有回调方法,然后调用fillInVersionsList方法


initSimulatorData(模拟器)是什么有吗?这里面有没有异步代码?

正如我所看到的,函数被调用了,但是
pSimulator
包含了什么?可能是
pSimulator
中没有
simulatorData
,是的,我想这是问题所在,但是成功之处是:$.ajax的参数不应该是回调?(对不起,我添加了缺少的函数)您必须使ajax调用同步,或者从suces:Function(){pSimulator.initSimulatorData(数据);//此处调用FillInversionList()}中调用FillInversionList()。我在ajax请求中添加了“async:false”参数,现在可以使用了,谢谢:)