Как отправить параметр на d3.json?
Я использую d3.json для получения динамических данных.
d3.json("/myweb/totalQtyService.do", function(json) {
drawChart(json);
});
Как разместить параметр на d3.json?
т.е.
данные: {
год: "2012",
клиент: "type1"
}
Любая идея передает эти параметры в сообщении? не параметр url/myweb/totalQtyService.do?year=2012&customer=type1
Я попробовал такое ниже, но не смог заставить его работать. потому что структура данных настолько различна
d3.json = > [Объект, объект, объект, объект]
$. ajax = > {имя_общества: "ACTIVA" entity_tar_val: 350entity_val: 400level: 1_proto_: Object},...
$.ajax({
type: "POST",
url: url,
// parameter here
data : {year: "2012", customer: "type1"},
success: function(json){
// console.log(json);
**drawChart(json);**
} ,
error:function (request, err, ex) {
}
});
Ответы
Ответ 1
ПРИМЕЧАНИЕ. Этот ответ относится к более ранней версии d3.json, см. комментарий Джошуа Тейлора ниже.
d3.json - это метод удобства, связанный с d3.xhr; он жестко запросил запросы GET.
Если вы хотите использовать POST, вы можете напрямую использовать d3.xhr.
Что-то вроде этого:
d3.xhr(url)
.header("Content-Type", "application/json")
.post(
JSON.stringify({year: "2012", customer: "type1"}),
function(err, rawData){
var data = JSON.parse(rawData);
console.log("got response", data);
}
);
Поскольку обратный вызов не указан при создании объекта запроса, он не отправляется немедленно. Полученный ответ JSON может быть проанализирован стандартным способом JavaScript, т.е. JSON.parse(data)
Документация для d3.xhr здесь.
Ответ 2
Вы также можете попробовать следующее:
d3.json(url,function(error, data) {
...
})
.header("Content-Type","application/json")
.send("POST", JSON.stringify({year: "2012", customer: "type1"}));
Ответ 3
Если вы хотите сделать запрос как HTML-форму (используя параметры запроса), вы должны сделать:
d3.request("/path/to/resource")
.header("X-Requested-With", "XMLHttpRequest")
.header("Content-Type", "application/x-www-form-urlencoded")
.post("a=2&b=3", callback);
Смотрите документы здесь: d3-request docs
Если вы хотите преобразовать простой объект в строку параметров запроса, вы можете использовать следующую функцию:
function obj2Params(params){
var str = "";
var amp = "";
for(var p in params){
if(params.hasOwnProperty(p)) {
str += amp + encodeURIComponent(p) + "=" + encodeURIComponent(params[p]);
amp = "&";
}
}
return str;
}
Ответ 4
Если вы используете struts, вы можете определить url и параметр:
<s:url action="jsondatatreeaction" var="jsonsearchTag"
namespace="/data">
<s:param name="searchType" value="%{searchType}"></s:param>
</s:url>
,
,
,
d3.json('$ {jsonsearchTag}', function (error, flare) {
...
}
,
,
,