![](/img/trans.png)
[英]Pass returned array from (Ajax output) to use as GLOBAL VARIABLES everywhere
[英]jquery global variables usable everywhere
我開始懷疑jQuery是否易於使用和靈活。 我有這個:
var prodata=[];
var request = $.get("proDB.txt", function(data) {
var lines=data.split(/\n/);
var numberofmodels=lines.length-2;
//var prodata=[];
var i;
prodata.push(0);
var fieldnames=lines[0].split(/\t/);
for (i = 1; i < lines.length-1; ++i) {
var fields=lines[i].split(/\t/);
prodata.push(i);
var j;
prodata[i]={};
for (j = 0; j < fields.length; ++j) {
//prodata[i][fieldnames[j]]=fields[j];
var str=fieldnames[j];
prodata[i][str]=fields[j];
}
}
//FILL THE DROPDOWN LIST
var options = '';
for (i = 1; i < lines.length-1; ++i) {
if (prodata[i]['name'].indexOf("elly") >= 0) {
var iselected = i;
}
options += '<option label="bla" value="' + prodata[i]['id'] + '">' + prodata[i]['name']+', '+prodata[i]['brand']+', '+prodata[i]['model']+'</option>';
}
$("#userchosenpromodel").html(options);
//SELECT DEFAULT OPTION
$('#userchosenpromodel option[value="' + prodata[iselected]['id'] + '"]').attr("selected", "selected");
}, 'text'); //$.get
在這樣定義之后,我想在代碼下面使用proId
:
//SUBMIT FORM
$('#submitbutton').click(function(e) {
e.preventDefault();
request.done(function(){
proId=$('#userchosenpromodel option[selected="selected"]').val();
proId=parseInt(proId);
computeUserDimensions(prodata[proId]);
});
});
console.log(proId);
如何?
prodata
同樣問題...我有無法擺脫的request.done
謝謝
jQuery沒有問題,但基於異步/事件的邏輯卻沒有問題。
您不能同步使用異步函數的返回。 您必須在回調或從回調中調用的函數中使用結果:
request.done(function(){
var proId=$('#userchosenpromodel option[selected="selected"]').val();
console.log(proId);
});
為什么不這樣做:
request.done(function(){
proId=$('#userchosenpromodel option[selected="selected"]').val();
doSomethingWithProId();
});
function doSomethingWithProId(){
console.log(proId);
}
或者,因此它不必是全球性的
request.done(function(){
var proId=$('#userchosenpromodel option[selected="selected"]').val();
doSomethingWithProId(proId);
});
function doSomethingWithProId(proId){
console.log(proId);
}
我認為第二個解決方案更好。 無論您需要使用proId做什么,都可以構建函數來傳遞該數據。 這樣,您就無需污染全局范圍。 聽起來您需要更好地了解JS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.