2015-12-25 90 views
-2

我得到以下JSON數據:如何檢查變量是否設置和存在從JavaScript?

{ 
    "ID": [ 
    "The i d field is required." 
    ], 
    "terms_condition": [ 
    "The terms condition field is required." 
    ] 
} 

,並存儲在變量:

var DataJson = data.responseText; 
var Json = JSON.parse(DataJson); 

var IdError = Json.ID[0]; 
var TermsConditionError = Json.terms_condition[0]; 

現在,當ID不是exists

我與這個例子嘗試我得到這個錯誤Uncaught TypeError: Cannot read property '0' of undefined以防止錯誤處理。

if (typeof Json.ID[0] !== 'undefined') { 
    alert('validation message found'); 
} else { 
    alert('validation message not found'); 
} 

但這不工作任何想法我做錯了什麼?

謝謝。

+0

if(Json && Json.ID && typeof ...) – CodeColorist

+0

可能數據不及時... –

+0

[JavaScript檢查變量是否存在(被定義/初始化)](http:// stackoverflow .com/questions/5113374/javascript-check-if-variable-exists-is-defined-initialized) –

回答

1

要檢查一個變量或字段是否被定義,你可以用undefined

if ((Json !== undefined) && (Json.ID !== undefined) && (Json.ID[0] !== undefined)) { 
    alert('validation message found'); 
} else { 
    alert('validation message not found'); 
} 

比較它,我看不出有任何問題,在您的代碼。請參閱下面的代碼片段。

var Json = JSON.parse('{"ID": ["The i d field is required."], "terms_condition": ["The terms condition field is required."]}'); 
 

 
var IdError = Json.ID[0]; 
 
var TermsConditionError = Json.terms_condition[0]; 
 

 
document.writeln(IdError + '<br>'); 
 
document.writeln(TermsConditionError + '<br>'); 
 
document.writeln('==================<br>'); 
 

 
function isDefined(Json) { 
 
    return (Json !== undefined) && (Json.ID !== undefined) && (Json.ID[0] !== undefined); 
 
} 
 
    
 
var inputData = [ 
 
    undefined, 
 
    {}, 
 
    {ID: ''}, 
 
    {ID: ['value']} 
 
]; 
 

 
inputData.forEach(function(inputDaten) { 
 
    document.writeln(JSON.stringify(inputDaten) + ': ' + isDefined(inputDaten) + '<br>'); 
 
});

也許問題是與data.responseText

+0

嗨我已經嘗試了你的例子,但每次我得到警報('驗證信息發現')'。 –

+0

你使用了什麼輸入數據? –

+0

我已經更新了片段。你可以檢查各種數據的結果 –

2

試試這個。

​​

TypeError: Cannot read property '0' of undefined

此錯誤時主JSON對象爲空或者未定義發生。當json對象中沒有數據時會發生這種情況。

+0

嗨我已經嘗試過你的例子,但每次我得到警報('驗證信息發現') –

+0

請檢查修改後的答案。你必須把&&運算符代替|| – Dhiraj

+0

嘗試使用undefined而不是'undefined' – Dhiraj

相關問題