1

prodata別の関数で使用するには、この関数 (動的に入力される) から変数を取得する必要があります。しかし、私は使用できるかわかりませんreturn。この関数の外で prodata を使用できるように return を配置する場所。

$.get("proDB.txt", function(data) {
    var lines=data.split(/\n/);
    var numberofmodels=lines.length-2;
    var prodata=[];
    var i;
    var fieldnames=lines[0].split(/\t/);
    for (i = 1; i < lines.length-1; ++i) {
        var fields=lines[i].split(/\t/);
        var j;
        prodata[i]={};
        for (j = 0; j < fields.length; ++j) {
            prodata[i][fieldnames[j]]=fields[j];
        }
    }
    //remplir la liste déroulante:
    var options = '';
    for (i = 1; i < lines.length-1; ++i) {
        if (prodata[i]['name'].indexOf("elly") >= 0) {
            options += '<option value="' + prodata[i]['id'] + '" selected>' + prodata[i]['name']+', '+prodata[i]['brand']+', '+prodata[i]['model']+'</option>';
        }else{
            options += '<option value="' + prodata[i]['id'] + '">' + prodata[i]['name']+', '+prodata[i]['brand']+', '+prodata[i]['model']+'</option>';
        }
    }
$("#userchosenpromodel").html(options);
}, 'text'); //$.get

次に、アクセスして使用する必要がありprodataます

$('#submitbutton').click(function(e) {
    e.preventDefault(); 
    //computeUserDimensions(prodata[proId]);
});

function computeUserDimensions(line){
4

3 に答える 3

2

その関数の外では使用できません。そうしないと、存在する前に使用されてしまいます。別の方法は、遅延オブジェクトを使用することです。

var request = $.get("myurl",handler,"text");

からデータを取得する必要がある場合は、次のようにしますhandler

request.done(function(data){
    // use the data here, but not outside
    console.log(data)
});

これを回避して、作業をハンドラーに保持しながら、変更された var を取得できるようにする方法の 1 つは、それへの参照を外部に格納し、.done() 内でのみアクセスすることです。

var prdata;
var request = $.get("myurl",function(data){
    prdata = data;
},"text");
console.log(prdata); // undefined because request isn't done
request.done(function(){
    console.log(prdata); // IS defined because request IS done
});
console.log(prdata); // undefined because request still isn't done
于 2013-04-04T20:00:19.147 に答える