javascript - 将ajax调用中返回的数据与JS函数中的数组值相等
问题描述
我试图弄清楚如何将 ajax 调用中返回的数据中的值与已建立的数组相等/比较
我有一个itemArray
包含“类别”和“颜色”的内容,然后我的 ajax 调用返回一个多级数组,该数组也有一个“类型”,其中包含一个包含类别和颜色级别的数组
我只是想弄清楚如何获取 ajax 返回的数据并简单地说“如果返回数据中的类别与 itemArray 中的类别匹配,则结果 = true”
var itemArray = JSON.parse('<?php echo json_encode($items);?>');
//this contains items called 'category' and 'color'
//console.log(itemArray);
var code = document.getElementById("code").value;
$.ajax({
type:'POST',
url:'validate',
data:{code:code},
_token: '{{ csrf_token() }}',
success: function(data){
console.log(data);
// this dumps an object with the following structure
/*
ID
name
type:array
0
category
color
1
category
color
*/
}
});
for(var i =0; i < itemArray.length; i++){
var obj = itemArray[i];
if(category == obj.category || color == obj.color {
result = true;
}else{
result = false;
}
}
解决方案
success()
您必须在自 jQuery 3.0 起已弃用并由此处的方法替换的方法中处理返回的数据done()
。
弃用通知:jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调从 jQuery 3.0 开始被删除。您可以改用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always()。
在此处查看完整文档
以下代码应满足您的要求。如果没有,您可以轻松修改它以适合您的目的。
var itemArray = JSON.parse('<?php echo json_encode($items);?>');
//this contains items called 'category' and 'color'
//console.log(itemArray);
var code = document.getElementById("code").value;
$.ajax({
type:'POST',
url:'validate',
data:{code:code},
_token: '{{ csrf_token() }}'
}).done(
function(data){
let results = []; // contains result for each item in itemArray
$.each(itemArray, function(index1, value1) {
let result = false;
$.each(data.ID.name.type, function(index2, value2) {
// both category and color must match
// if you want either to match use OR (||) instead
if(value1.category === value2.category && value1.color === value2.color) {
result = true;
break;
}
});
results.push(result);
});
console.log(results); // see your results here
}
);
此解决方案假定类别是唯一的,颜色不一定是唯一的。它还假设匹配必须具有相同的类别和颜色。所以,如果你有itemArray:
[
{ category: 'cat1', color: 'red' },
{ category: 'cat2', color: 'white' },
{ category: 'cat3', color: 'blue' }
]
并返回 ajax数据:
{
ID: {
name: {
type: [
{category: 'cat1', color: 'red'},
{category: 'cat3', color: 'red'}
]
}
}
}
返回的结果将是
[true, false, false]
推荐阅读
- python - PDF 下载不适用于 Android Captive Portal Browser
- java - 没有在 vaadin 框架中获得 sessin 值
- ember.js - 在 ember route-action helper 中获取操作的价值
- java - 如何在 Java 中扩展工厂方法模式中的类
- ajax - Postcodes.io 批量查找
- amazon-mws - 如何使用亚马逊 mws 订单调整提要取消一件商品?
- python-3.x - tensorflow map_fn 上的信号值张量
- angular - JHipster:延迟加载的模块 i18n 国际化
- angularjs - $injector:unpr 未知提供者: $cookiesprovider ,$cookies
- bigdata - 如何在 Impala 中处理 YYYYMM 数据?