我从某些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 *
的新功能答案 0 :(得分:1)
请尝试此验证。它比较login
数组的第一个位置。
response['login'][0] == "This field is required."
答案 1 :(得分:1)
使用点运算符访问响应对象的不同属性。
response.login[0] === "This field is required."
只是为了让你知道这里发生了什么 - 你得到了一个json对象。可以通过简单的使用.PropertyName来访问json对象中的属性。您的登录属性是一个数组,并且您要访问数组中的第一个项目,因此您使用[0]索引器。最后,你要比较字符串,所以javascript中的最佳实践是使用===运算符,它将比较类型和值。
答案 2 :(得分:1)
因为数组不等于另一个数组。请检查response['login'][0]
以比较字符串。
> var array1 = ['array'];
> array1 == ['array']
< false
> array1[0] == 'array'
< true
答案 3 :(得分:0)
删除[]
。这是阵列。你必须与字符串比较
答案 4 :(得分:0)
JSON
基本上是Javascript语法的可传输格式。你在比较错误的东西。一旦JSON字符串在Javascript中解码,它就变成 NATIVE javascript对象/数组。因此,鉴于你的样本JSOns tring,你应该做
(response.password[0] == 'This field is required')
请注意“此字段...”文字周围缺少[]
括号。您的代码实际上是
if (string == array)
什么时候应该
if (string == string)
(对比较成员使用相同的位置)。
答案 5 :(得分:0)
你可以试试这个: -
response['login'][0] == "This field is required."
答案 6 :(得分:0)
您无法将JavaScript中的数组与==
进行比较。
就像这样:{} == {} // false
两个对象不一样。
所以你也期望:new Foo() == new Foo(); // false
并且类似地:new Array() == new Array() // false
[]
是new Array()
的简写(它有点复杂,但暂时忽略它)。