Допустим, что источник, из которого вы получите ваш JSONP реакция безопасна и дает правильный ВСЕГДА ответ JSONP.
Основном это означает, что вы получите ответ вроде:
functionName(jsonString)
Как и в вашем примере:
Temp([{"XXX":"2","YYY":"3","ZZZ":"4"},{"XXX":"5","YYY":"6","ZZZ":"7"},{"XXX":"1","YYY":"2","ZZZ":"3"}])
Extract JSON - метод 1
Если вы только нужно объект от ответа функции, вы можете сделать что-то вроде этого:
var jsonObject = null;
try
{
var response = 'Temp([{"XXX":"2","YYY":"3","ZZZ":"4"},{"XXX":"5","YYY":"6","ZZZ":"7"},{"XXX":"1","YYY":"2","ZZZ":"3"}])';
var temp = response.split('(');
delete temp[0];
temp = temp.join('(').split(')');
delete temp[temp.length-1];
temp = temp.join(')');
temp = temp.substring(1, temp.length-1);
jsonObject = JSON.parse(temp);
}
catch(ex)
{
}
console.log(jsonObject);
Extract JSON - метод 2 Использование этого метода позволяет фактически иметь несколько json-объектов в качестве функциональных параметров. Предположим, что вы не знаете, какой метод имя JSONP результат предназначен для вызова.
Таким образом, мы можем сделать что-то вроде:
var response = 'Temp([{"XXX":"2","YYY":"3","ZZZ":"4"},{"XXX":"5","YYY":"6","ZZZ":"7"},{"XXX":"1","YYY":"2","ZZZ":"3"}])';
try{
var fnName = response.split('(')[0];
var fn = new Function(fnName, response);
var jsonObject = null;
fn(function(json){
jsonObject = json;
});
console.log(jsonObject);
}
catch(ex){
console.log(ex.message);
}
вы можете использовать зиЬзЬги функции http://www.w3schools.com/jsref/jsref_substr.asp – Tune389
ли это полный ответ? – shahmanthan9
да @ shahmanthan9, я получаю подобный ответ. Мне нужен только массив. –