1

我正在从一些 ajax 操作中获取数据,并尝试使用 javascript 来实际进行一些条件检查

所以当我打印来自 ajax 的响应时

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 新手*

4

7 回答 7

1

因为一个数组不等于另一个数组。检查response['login'][0]以比较字符串。

> var array1 = ['array'];

> array1 == ['array']
< false

> array1[0] == 'array'
< true
于 2013-09-16T14:59:20.100 回答
1

使用点运算符访问响应对象的不同属性。

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

只是为了让你知道这里发生了什么——你得到了一个 json 对象。可以使用 .PropertyName 简单地访问 json 对象中的属性。您的登录属性是一个数组,并且您想访问数组中的第一项,因此您使用 [0] 索引器。最后,您正在比较字符串,因此 javascript 中的最佳实践是使用 === 运算符,它将比较类型和值。

于 2013-09-16T14:58:32.273 回答
1

请尝试此验证。它比较login数组的第一个位置。

response['login'][0] == "This field is required."
于 2013-09-16T14:57:47.893 回答
0

JSON基本上是一种可传输的 Javascript 语法格式。你在比较错误的东西。一旦 JSON 字符串在 Javascript 中被解码,它就会成为一个NATIVE javascript 对象/数组。因此,鉴于您的示例 JSOns 字符串,您应该这样做

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

[]请注意“此字段...”文本周围缺少括号。您的代码有效

if (string == array)

什么时候应该

if (string == string)

(对比较成员使用相同的位置)。

于 2013-09-16T14:58:44.670 回答
0

你可以试试这个:-

response['login'][0] == "This field is required."
于 2013-09-16T14:59:12.137 回答
0

您无法将 JavaScript 中的数组与==.

就像这样:{} == {} // false两个对象不相同。

所以你也会期望:new Foo() == new Foo(); // false

同样:new Array() == new Array() // false

[]是简写new Array()(它有点复杂,但现在忽略它)。

于 2013-09-16T15:02:43.183 回答
0

删除[]. 这是数组。你必须与字符串比较

于 2013-09-16T14:58:26.163 回答