2013-09-16 64 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()速记(这是一个稍微复杂一些,但忽略现在)。