0
以下のコードでは、データベースからすべてのデータを取得し、proj4_data変数に格納するためにajaxを使用しています。変数はグローバルです。私はページ上のボタンをクリックすると変数の値にアクセスすることができますが、コールバック関数がロードされた直後に変数値にアクセスしようとすると、変数の値は空になります価値を得ることを試みなさい)。グローバル変数の値にアクセスできないのはなぜですか?
$(document).ready(function() {
var modal = document.getElementById('myModal');
var prod_name = document.getElementById('product_name');
cart = new shopping_cart("jadrn026");
proj4_data = new Array();
$.get('/perl/jadrn000/proj4/get_products.cgi', storeData);
alert(proj4_data);
$('#milk').on('click', function() {
tmpString = "";
var value = $("#milk").val();
prod_name.innerHTML = value;
tmpString += '<ul id="db_items">';
for(var i=0; i < proj4_data.length; i++) {
if(proj4_data[i][1] == "Milk chocolate") {
var str1 = proj4_data[i][2].split("'").join("\\'");
var str2 = proj4_data[i][3].split("'").join("\\'");
var str3 = proj4_data[i][4].split("'").join("\\'");
tmpString += "<li><button class=\"description\" onclick=\"showDesc(\'" + str1 + "\', \'" + str2 + "\', \'" + str3 + "\', \'" + proj4_data[i][0] + "\', \'" + proj4_data[i][6] + "\')\"><img src=\"/~jadrn000/PROJ4_IMAGES/" + proj4_data[i][0]+".jpg\" alt=\""+ proj4_data[i][2]+"\""+
" width=\"200px\" /></button><br />";
tmpString += "<p id='price'>$" + proj4_data[i][6] + "</p>";
tmpString += "<input type='button' value='Order' onclick=\"showDesc(\'" + str1 + "\', \'" + str2 + "\', \'" + str3 + "\', \'" + proj4_data[i][0] + "\', \'" + proj4_data[i][6] + "\')\"" + proj4_data[i][0]+"' />";
}
}
tmpString += "</ul>";
var handle = document.getElementById('content');
handle.innerHTML = tmpString;
});
function storeData(response) {
var tmpArray = explodeArray(response,';');
for(var i=0; i < tmpArray.length; i++) {
innerArray = explodeArray(tmpArray[i],'|');
proj4_data[i] = innerArray;
}
}
// from http://www.webmasterworld.com/forum91/3262.htm
function explodeArray(item,delimiter) {
tempArray=new Array(1);
var Count=0;
var tempString=new String(item);
while (tempString.indexOf(delimiter)>0) {
tempArray[Count]=tempString.substr(0,tempString.indexOf(delimiter));
tempString=tempString.substr(tempString.indexOf(delimiter)+1,tempString.length-tempString.indexOf(delimiter)+1);
Count=Count+1
}
tempArray[Count]=tempString;
return tempArray;
}
ああ、それを得ました。はい、私はコールバックで警告を試み、それが働いた。ありがとうございました。また、コールバック関数のコードを書き直すことなく、別のJavaScriptファイルでこの変数にアクセスできるかどうかを知りたかっただけです。私は両方のファイルを自分のhtmlで正しい順序で定義しました。 – Mona