2016-07-27 6 views
0

データベース内のオブジェクトからオブジェクトを作成する関数があります。 Ajaxはデータの要求を処理し、JSON形式で解析され、関数に渡されます。私はいくつかのチェック(if文とnot if)を行い、それをコードの別の領域に返します。値を持つオブジェクトを返すが、値は定義されていない

それを返すときしかし、私はconsole.log()それ、それは私がそのオブジェクトをクリックして、ダイアログボックスに示されている変数を取得Object { }

であることがわかり(と、それは彼らが各プロパティに添付の値を持って表示されます)が、時にすることができます私は、オブジェクトを処理し、作成するための未定義

My機能が

01で取得

result = alertFilled(type,mon,year,data.tableField); 

console.log(result.table); 

をやろうとしています

function alertFilled (type,mon,year,tableField){ var alertObj = {}; $.ajax({ method: 'POST', url: 'ajaxScripts/checkAlertFilled.php', data: { 'type': type, 'mon': mon, 'year': year, 'id': tableField, 'ajax': true }, // return appropriate message success: function (data) { var parsed = JSON.parse(data); alertObj.table = type; alertObj.tableField = tableField; alertObj.monthYear = parsed.mthYr; alertObj.month = ""; alertObj.year = ""; alertObj.echoFilled = false; alertObj.bravoFilled = false; var index = []; for (var x in parsed) { index.push(x); } alertObj.month = parsed[index[2]]; alertObj.year = parsed[index[3]]; var mthYrLower = parsed[index[0]].toString(); if (mthYrLower.toLowerCase().indexOf("echo") >= 0){ if ($.trim(parsed[index[1]]) !== "") { alertObj.echoFilled = true; } else { alertObj.echoFilled = false; } } if (mthYrLower.toLowerCase().indexOf("bravo") >= 0){ if ($.trim(parsed[index[1]]) !== "") { alertObj.bravoFilled = true; } else { alertObj.bravoFilled = false; } } counter++; } }); return alertObj; } 

checkAlertFilled.phpは、私は何を見ることreturn alertObj;が同期return文である一方、$アヤックスは、単に非同期関数であるということである

type = "Table1" or "Table2" 
tableField = "Column1" or "Column2" or "Column3" 
monthYear = "JUL2016 ECHO" as an example 
month = "JUL" 
year = "2016" 

と他の変数

echoFilled = "true" or "false" 
bravoFilled = "true" or "false" 
+0

あなたは、私はそれが重複したことについて、最初のrepsonseを読んで、あなたは同様の答えを提供している見ることができますcheckAlertFilled.php – eronax59

答えて

0

を返します。 。空のalertObjが新しいプロパティで満たされずにすぐに返されます。たとえば、コールバック関数を使用するようにコードを再設計する必要があります。例:

function alertFilled (callback, type, ...) { 
    var alertObj = {}; 
    $.ajax({ ..., success: function (data) { 
     // do all your stuff here 
     callback(alertObj); 
    }}); 
} 

と使用方法:

alertFilled(function (data) { 
    console.log(data); 
}, ...); 
+0

に戻るどのようないくつかのコードを記述してください。しかし、私が提出したコードの文脈であなたの答えを提供することができますか? –

+0

@DanW、更新されました。私はあなたがすでに答えを見つけたと思う。 – ZitRo

関連する問題