$.ajax(type: 'GET', data: ticket)
여기서 ticket
은 인증 토큰입니다. ticket
은과 같이 획득 :중첩 지연된 AJAX 호출을 통한 반복
var newTicket = $.ajax({
type: 'POST',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'JsonPCallBack',
data: {},
url: "https://api.examample.com?username=bar&password=foo",
});
내가 얻은 후에는 내 ticket
내가 할 수있는 내 GET
:
function getData(ticket, query) {
return $.ajax({
type: 'GET',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'JsonPCallBack',
data: ticket,
url: "https://api.examample.com/?data=" + query,
});
}
함께 퍼팅 :
newTicket.done(function(ticket) {
var ticket = ticket;
getData(ticket, query).done(function(result) {
console.log(result);
});
});
이 잘 완벽하게 작동 - 내 두 전화가 확실히 작동합니다.
제 질문은 많은 값인 query
에 대해이 호출을 다시하고 싶습니다. 내가 시도한 것은 다음과 같습니다.
// example.com promises me that I can use ticket for multiple requests
// for one ticket I will try and do multiple requests
newTicket.done(function(ticket) {
var deferred = $.Deferred();
var ticket = ticket;
// Inspired by http://stackoverflow.com/questions/5627284/pass-in-an-array-of-deferreds-to-when
requests = [];
for (i in queries) {
query = queries[i];
requests.push(getData(ticket, query));
}
$.when.apply($, requests).done(function(result) {
for(var i = 0; i < arguments.length; i++) {
console.log(calculateData(arguments[i][0]));
}
});
});
그러나 이것은 작동하지 않습니다. 나는 이유를 알 수 없다. 어떤 충고?
이 코드 추가 시도 :
.fail(function(jqXHR, textStatus, errorThrown) {
console.log('jqXHR: ' + jqXHR);
console.log('textStatus: ' + textStatus);
console.log('errorThrown: ' + errorThrown);
});
을 그리고이 내게 준 :
jqXHR: [object Object]
textStatus: parsererror
errorThrown: Error: JsonPCallBack was not called
업데이트 : JSONP를 지정하지 않은 경우이 하나의 요청이있는 간단한 경우가 작동하지 않습니다 및 JsonPCallBack. jsonp 및 JsonPCallBack을 지정하면 작동합니다.
내 배열에서 두 개의 요청으로 코드를 실행 해 보았습니다. 패킷을 스니핑하면 상태 코드 200 OK로 두 가지 요청이 이루어진다는 것을 알 수 있습니다. 응답은 JsonPCallBack({
으로 시작하고 올바른 데이터를 포함합니다. 그래서 실제의 repsonse를 보면 모든 것이 정확 해 보입니다. .fail()
에 도달하는 이유는 무엇입니까?
는 당신이'$의 .when.apply'에'실패()'처리기를 추가하려고 했습니까? 'done' 핸들러가 호출되는지 확인하고 있습니까? 이 문제를 해결하려고 시도한 증거는 보이지 않았습니다. – JLRishe
감사. 나는 나의 대답을 업데이트했다. – user1965074
어떤 방식으로 작동하지 않습니까? –