2016-03-01 4 views
0

Как отправить данные (строку запроса) с помощью методов отложенной очереди?отправить строку запроса через queue.defer

В настоящее время я использую d3.json, чтобы получить статический файл, как показано ниже.

queue() 
    .defer(d3.json, "js/file1.json") 
    .defer(d3.xhr, 'js/file2.json') 
    .await(callback) 

Теперь мне нужно также «GET» .php-файл, возможно, посылка некоторых данных через строку запроса. В JQuery, я

$.getJSON('ajax/file1.php', {data: some_var}, callback) 

Итак, я попытался обернуть выше функции и передать его в defer.

get_paths = function(path) {$.getJSON(path, {data: some_var})} 
queue() 
    .defer(d3.json, "js/world-110m_MC.json") 
    .defer(get_paths, 'ajax/file1.php') 
    .await(callback); 

, но, к сожалению, обратный вызов не вызывать у всех (хотя, я вижу два AJAX-запросы делаются через вкладку сети в хроме)

+1

я dont't получить его. Почему бы просто не использовать d3.json и позвонить в ваш php-файл? – Kordi

ответ

1

Вы можете просто сделать это, если вы хотите добавить запрос строка.

queue() 
    .defer(d3.json, "js/world-110m_MC.json") 
    .defer(d3.json, 'ajax/file1.php?data=' + $.param(some_var)) 
    .await(callback); 

Для построения строки запроса без JQuery, если у вас есть более чем один параметр, который вы могли бы просто использовать код, как этот

var params = { 
    parameter1: 'value1', 
    parameter2: 'value2', 
    parameter3: 'value3' 
}; 

var queryString = Object.keys(params) 
    .map(k => k + '=' + encodeURIComponent(params[k])) 
    .join('&'); 
+0

Мои параметры содержат вложенные массивы объектов, поэтому для лень я искал способ напрямую передать переменную функции (например, в $ .getJSON) – Michele

+0

просто создать параметры с jquery тоже должно быть очень просто. Подумайте, что у него есть что-то неприятное с обратным вызовом, который jquery проходит обратно. Просто используйте http://api.jquery.com/jquery.param/ для queryString. @Michele исправил мой ответ, так что теперь его очень легко. – Kordi

Смежные вопросы