2014-07-14 69 views
0

我想从AJAX调用中筛选出一些值。这是我曾尝试:如何使用Ajax过滤器

var year = 200908; // for example   
var resultArray = data.filter(function (a) { 
    return a.proddate == year; 
}); 

var firstTask = resultArray[0]; 
var lastTask = resultArray[resultArray.length - 1]; 

datasuccess功能来在Ajax调用。但我发现了这个错误:

JavaScript runtime error: Object doesn't support property or method 'filter' 

这里是返回数据的样本:

"[{ 
    "tasknum":6, 
    "dependtask":5, 
    "jobname":"prc", 
    "proddate":"200908", 
    "activity":"Pr‌​elim", 
    "groupname":"CNSPROD-EST", 
    "parametername":"n/a", 
    "parametervalue":"n/a" 
}]" 

任何想法?

+0

错误已经告诉你什么问题是,'data'是一个对象,但'filter()'是一个数组函数。发布数据示例 – charlietfl

+0

“[{”tasknum“:6,”dependtask“:5,”jobname“:”prc“,”proddate“:”200908“,”activity“:”Prelim“,”groupname“:”CNSPROD- EST“,”parametername“:”n/a“,”parametervalue“:”n/a“}]” – one1day

回答

0

首先,尝试在data上执行console.log并验证您正在检索的是什么。 filter仅适用于阵,因此这会工作:

var resultArray = [1,2,3].filter(function(a) { 
    return a > 2; 
}); 

但这不会:

// "Object doesn't support property or method 'filter'" 
var resultArray = {1: true, 2: true, 3: true}.filter(function() { ... }); 
+0

my obj看起来像这样:[[object Object],[object Object],[object Object],[object对象]] – one1day

+0

但是,如果我扩展OBJ,它会显示[0],[1],[2] ..... – one1day

+0

你是否绝对肯定你接收到正确的对象? [你的代码在这里运行良好](http://jsfiddle.net/6esm3/) –

0

我怀疑data是没有分配给响应变量。使用JSON.parse()

你的代码从JSON JS数组或者也许你还没有解析响应在这里工作正常:

DEMO

+0

我得到:对象不支持属性或方法'筛选' – one1day

+0

所以请尝试'console.log(数据)'......这是什么显示? – charlietfl

+0

我有这个var obj = jQuery.parseJSON(data.d); – one1day