Javascript 检查json数据长度是否为';行不通
我正在尝试用Bootstrap4下拉菜单构建一个产品比较模块。 在该下拉列表中,列出了一些产品信息。当您在产品上单击“删除”时,将加载名为Javascript 检查json数据长度是否为';行不通,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我正在尝试用Bootstrap4下拉菜单构建一个产品比较模块。 在该下拉列表中,列出了一些产品信息。当您在产品上单击“删除”时,将加载名为updateCompare的函数。此函数用于加载json数据并更新比较列表。这一切都很好,除非只有一个产品上市。当我在最后一项上单击delete时,函数将抛出错误 所以我得到的是: function updateCompare(){ $.get(compareUrl + '?format=json', function(e) { pro
updateCompare
的函数。此函数用于加载json数据并更新比较列表。这一切都很好,除非只有一个产品上市。当我在最后一项上单击delete时,函数将抛出错误
所以我得到的是:
function updateCompare(){
$.get(compareUrl + '?format=json', function(e) {
products = [];
$.each(e.compare.products, function(index, product) {
// ... code to build products ....
products.push(productHtml);
});
products.join('');
$('#compare .compare-inner .empty').html(products);
})
}
$(function(){
// delete product from compare
$(document).on("click", "#compare .remove", function(e) {
e.preventDefault();
var vid = $(this).closest('.item').data('vid');
var url = compareUrl + 'delete/' + vid;
$.ajax({
type: "POST",
url: url,
success: function(msg){
updateCompare()
}
});
});
});
我得到的错误是TypeError:a未定义
我在updateCompare
中尝试的是:
function updateCompare(){
$.get(compareUrl + '?format=json', function(e) {
products = [];
if(e.compare.products.length > 1 ){
$.each(e.compare.products, function(index, product) {
// .... code to build products
});
} else {
$('#compare').dropdown("dispose")
}
但上面抛出了一个错误,如:TypeError:e.compare.products未定义
我也试过:
if(e.compare.products.length > 1 || e.compare.products != NULL || e.compare.products != false ){
但这会引发一个错误,即compare.products未定义
我在这方面工作太久了,所以可能我错过了一些非常简单的东西。我再也看不见了:(
非常感谢您的帮助
根据要求
空比较json:
{
"compare":false
}
JSON与3种产品:
{
"compare":{
"products":[
{
"id":39687158,
},
{
"id":39687161,
},
{
"id":39687164,
}
]
},
}
你能给我们看一下json数据吗?你在哪里使用了未定义的变量a?@schildi:我已经用json更新了这个问题。根据你的想法,我也尝试了e.compare.products!=false
。但这也给出了TypeError:a未定义
。我不知道你使用变量a的确切意思是什么是未定义的
?!?@Meules schldi的意思-在你的问题中,你写道“我得到的错误是TypeError:a未定义”…但是在您的代码示例中没有名为a
的变量。显然,为了解决此错误,您需要找到该变量,然后找出为什么没有给它一个值。@Meules无论如何,基于您的JSON,而不是if(e.compare.products.length>1){
如果(e.compare!=false),您最好使用if(e.compare!=false){
。显然,在您提到的“空JSON”案例中,没有称为“产品”的属性是“比较”的子属性.它不存在…这就是为什么当你试图在代码中使用它时,你会被告知e.compare.products是未定义的
。未定义意味着变量不存在或没有值。从逻辑上讲,你不能要求它的长度,因为你要求的是零的长度。因此…当你认为真的。@schildi,@ADyson:Man!!就像我说的,我在这方面花了太长时间。如果(e.compare!=false){
去掉错误。剩下的唯一一件事就是销毁下拉列表。谢谢!!