2014-07-14 73 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