我有这个ajax请求:
SJA.ajax(dataToSend, //this is internal method, which sends requests to the urls
function (respond) {
var categorySelect = that.$modal.find('.cat-post')[0].selectize; //using selectize.js plugin for selects.
if (respond) {
callback && callback(respond);
for (var i in respond) {
//console.log(respond[i].id);
//console.log(respond[i].name);
categorySelect.addOption({value: respond[i].id, text: respond[i].name}); //adding new options to a select field.
}
}
});
var category: that.$modal.find('.cat-post').val() //this is option value in select field !== 'null' ? $('.cat-post').val() : null, //this variable is responsible for keeping selected data.
然后我比较选定的数据(因为我需要获取一些字符串值才能在表中使用它):
var categoryName = 'all';
switch (category) {
case '0' // compare with respond id:
categoryName = "all" // compare with respond name ;
break;
case '1':
categoryName = "Health";
break;
case '2':
categoryName = "Cars";
break;
}
之后我在桌子上添加新的td。
$tbody.append(['<tr data-id="' + row.id + '">',
'<td class="restricted-view-hide view-mode2-hidden view-mode21-hidden">' + categoryName + '</td>', '</tr>'].join(''));
但我不希望每次在switch中键入新值,我想用某些东西来动态接收新值。 我尝试过这样的事情:
categoryName = respond[i].id != null ? respond[i].name : "any";
这是不行的。有任何想法吗?
答案 0 :(得分:1)
右。假设:
1)您知道您发布的条件语句使用了response.id和respond.name,其中您的switch语句使用$(“。cat-post”)。val(),并且这两种方法很可能返回完全不同的值。
2)你发布的条件语句使用了你想要它使用的变量,它只是没有给出预期的答案 - 也就是说,在response.id无效的情况下,它没有给你“任何”
如果是这种情况,那么解决方案就足够简单了。没有id的元素为.id返回“”,而不是null,所以请检查是否response.id!=“”,而不是!= null。
categoryName = respond[i].id != "" ? respond[i].name : "any";
那说......
categoryName = respond[i].id != null ? respond[i].name : "any";
这看起来不对劲。它基本上说“如果我的响应元素有一个id,那么使用它的名称值作为categoryName”。这是你想要的吗?如果回复[i] .id,你能确定response [i] .name永远有效吗?为什么不检查是否响应[i] .name是!=“”?如果未设置id属性,是否对name属性的有效性存在疑问?使用
categoryName = respond[i].name != "" ? respond[i].name : "any";
会出现在面值上以使其更有意义。
值得注意的是,假设1)是一个相当大的假设。如果您的代码当前正以您希望的方式工作,但您希望使其更灵活,除非存在严重的重复数据(其中$(。cat-post)[0] .val()设置为一些值由response [i] .name(或反之亦然)确定,实现上面的内容会破坏你的代码。
请注意,这仅适用于您的代码从根本上起作用,但却给您错误的值。如果它被打破了,根本没有给你任何回应,那么你需要更具体地说明你的意思“它不起作用”。
答案 1 :(得分:0)
Dunno,如果它可以改变,但尝试:
categoryName = (respond[i].id != null) ? respond[i].name : "any";
而不是^^