Javascript 如何使用ajax进行等值类型比较返回json空数组

Javascript 如何使用ajax进行等值类型比较返回json空数组,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我正在使用ajax获取返回的json。有时它返回一个空字符串。我想了解如何对json空字符串执行“==”等值类型比较。对于下面的示例,我可以在“==”的右侧放置什么来获得“true”弹出窗口(注意:这个示例将返回“false”)?提前谢谢 <script type='text/javascript'> $(function(){ $.post('somefile.php', function(data){alert([]===[]?'true':'false'

我正在使用ajax获取返回的json。有时它返回一个空字符串。我想了解如何对json空字符串执行“==”等值类型比较。对于下面的示例,我可以在“==”的右侧放置什么来获得“true”弹出窗口(注意:这个示例将返回“false”)?提前谢谢

<script type='text/javascript'>
    $(function(){
        $.post('somefile.php', function(data){alert([]===[]?'true':'false');}, 'json');
    })
</script>

$(函数(){
$.post('somefile.php',函数(数据){alert([]=[]?'true':'false');},'json');
})

如果响应
数据
是空字符串,请尝试
警报(数据==='[]'?'true':'false')
如果你得到一个数组的响应,只需检查它的长度

alert(data.length?'true':'false')

因此,如果长度为0,则Javascript的值为falsy,您将得到'true',如果长度为1或更大,则您将得到'false'。

如果响应
数据
是空字符串,请尝试
警报(数据=='[]'?'true':'false')
如果你得到一个数组的响应,只需检查它的长度

alert(data.length?'true':'false')

因此,如果长度为0,则Javascript的值为falsy,您将得到“true”,如果长度为1或更大,则会得到“false”。

返回false,因为数组是引用类型,而不是基元类型;也就是说,如果你说:

var a = []; var b = [];
a
b
存储对其值的引用,而不是值本身。因此,对
a
值的引用和对
b
值的引用是不同的

要比较数组,据我所知,您必须遍历所有元素并逐个比较它们


另一方面,与基元类型比较它们的值。因此,也许您可以返回一个字符串并进行比较。

返回false是因为数组是引用类型,而不是基元类型;也就是说,如果你说:

var a = []; var b = [];
a
b
存储对其值的引用,而不是值本身。因此,对
a
值的引用和对
b
值的引用是不同的

要比较数组,据我所知,您必须遍历所有元素并逐个比较它们


另一方面,与基元类型比较它们的值。因此,也许您可以返回一个字符串并进行比较。

这将返回false,因为somefile.php的实际返回值是:json_encode(array());我已经更新了答案,您也可以在您的警报(…)之前添加代码:console.log(data)或alert(data),只是为了检查您在响应中的执行情况。我尝试了:alert(data=='[]'?'true':'false')给我false所以,尝试在浏览器控制台中检查,使用console.log(data)或alert(data)检查在空数组的情况下得到的响应值,console.log(data)会给我[],这就是我在示例代码中使用[]的原因。感谢您尝试返回false,因为somefile.php的实际返回值是:json_encode(array());我已经更新了答案,您也可以在您的警报(…)之前添加代码:console.log(data)或alert(data),只是为了检查您在响应中的执行情况。我尝试了:alert(data=='[]'?'true':'false')给我false所以,尝试在浏览器控制台中检查,使用console.log(data)或alert(data)检查在空数组的情况下得到的响应值,console.log(data)会给我[],这就是我在示例代码中使用[]的原因。谢谢你的尝试这就是我得到的:[]=”;真[]=“”;假[]==[];左侧的[]为false,是一个空的JSONTH字符串,因为您正在将引用类型与基元类型进行比较。使用
=
操作符,数组会在幕后转换为字符串。这就是为什么它会变成真的。重点是不要使用比较运算符比较两种引用类型。您的答案不可能使用===将数组与引用类型进行比较,经验教训,谢谢!这就是我得到的:[]==”;真[]=“”;假[]==[];左侧的[]为false,是一个空的JSONTH字符串,因为您正在将引用类型与基元类型进行比较。使用
=
操作符,数组会在幕后转换为字符串。这就是为什么它会变成真的。重点是不要使用比较运算符比较两种引用类型。您的答案不可能使用===将数组与引用类型进行比较,经验教训,谢谢!