2013-09-16 101 views
1

我從一些Ajax操作中獲取數據,並試圖使用JavaScript做一些有條件的檢查,實際上如何比較值在JavaScript

所以當我打印從阿賈克斯像

document.write(response) 
響應

結果

[object Object] 

當我打印像document.write(JSON.stringify(response))

結果

{"status":"failed","login":["This field is required."],"password":["This field is required."]} 

所以上面是實際的數據我得到什麼,我試圖做的是

if(response.status === 'failed') 
      window.location.href = response.next; 
     else if ('login' in response && response['login']==["This field is required."]) 
      { 
       $("#message").html(<p>Username is required</p>); 
      } 
     else if ('password' in response && response['password']==["This field is required."]) 
      { 
       $("#message").html(<p>Password is required</p>); 
      } 

&&條件response['login']==["This field is required."]不工作 那麼如何檢查以上類型在javascript中的值?

注:* 新的JavaScript *

+0

如果你要有一個登錄值的數組,你可能需要使用[indexOf](http://www.w3schools.com/jsref/jsref_indexof.asp)方法而不是「==」 。 ''reponse.login.indexOf('This field is required')!== -1' – Stefan

回答

1

使用點運算符訪問響應對象的不同屬性。

response.login[0] === "This field is required." 

只是讓你知道這裏發生了什麼 - 你找回了一個json對象。 json對象中的屬性可以通過使用.PropertyName進行簡單訪問。您的登錄屬性是一個數組,並且您想訪問數組中的第一個項目,因此您使用[0]索引器。最後,你在比較字符串,所以在javascript中的最佳做法是使用===運算符,它將比較類型和值。

+0

問題不在於它們沒有使用點運算符 - 括號內的運算符在語法上是正確的。它也不缺乏===。但事實上,他們正在比較數組,當他們真的想比較字符串。 – Matt

1

試試這個確認,而不是。它比較login數組的第一個位置。

response['login'][0] == "This field is required." 
0

刪除[]。這是數組。您必須與字符串

+0

-1:目前還不清楚你建議刪除什麼'[]'。除非你在響應和if語句中刪除它,那麼你將需要做一些額外的工作來實現這個工作 – musefan

0

JSON基本上是一種可移植的Javascript語法格式。你在比較錯誤的東西。一旦JSON字符串在Javascript中解碼,它將成爲一個012對象對象/數組。因此,給你的樣品JSOns特林,你應該做

(response.password[0] == 'This field is required') 

注意周圍缺乏支架[]「字段:」文本。您的代碼是有效

if (string == array) 

當它應該是

if (string == string) 

(使用比較成員相同的位置)。

0

你可以試試這個: -

response['login'][0] == "This field is required." 
1

因爲數組不等於另一個數組。請檢查response['login'][0]來比較字符串。

> var array1 = ['array']; 

> array1 == ['array'] 
< false 

> array1[0] == 'array' 
< true 
0

您無法將JavaScript中的數組與==進行比較。

這是這樣的:{} == {} // false兩個對象是不一樣的。

所以,你還期望:new Foo() == new Foo(); // false

和類似:new Array() == new Array() // false

[]new Array()速記(這是一個稍微複雜一些,但忽略現在)。