Ajax can';无法使d3.xml正确发布
我试图通过AJAX/d3.xml将一些变量发布/获取到php文件中,但是php内部的print\r($\u POST/$\u GET)告诉我它们是空的。即使是这个例子对我也不起作用Ajax can';无法使d3.xml正确发布,ajax,d3.js,Ajax,D3.js,我试图通过AJAX/d3.xml将一些变量发布/获取到php文件中,但是php内部的print\r($\u POST/$\u GET)告诉我它们是空的。即使是这个例子对我也不起作用 d3.xml("xxx.php") .header("Content-Type", "application/x-www-form-url-encoded") /* .get("a=2&b=3", function(error, data) { console.lo
d3.xml("xxx.php")
.header("Content-Type", "application/x-www-form-url-encoded")
/*
.get("a=2&b=3", function(error, data) {
console.log(error);
})
*/
.post("a=2&b=3", function(error, data) {
console.log(error);
})
.on("load", createTable(data));
控制台告诉我有一个POST请求,但在POST下(在Firefox上,而不是在Chrome上),它在一行“a=2&b=3”中列出了变量,而不是
a=2
b=3
就像往常一样<我没有得到的是什么 首先,对评论中的混乱表示歉意。我在寻找d3旧版本的源代码。在较新的代码中,如果不提供对d3.xml的回调,它将返回一个可以直接配置的xhr请求,这是事实。(如果您提供了回调,它会像以前一样立即执行GET) 你会讨厌这个的,所以做好准备。:)您的问题是因为您的内容类型标题中有一个额外的破折号。你有:
application/x-www-form-url-encoded
但应该是这样
application/x-www-form-urlencoded
查看Firefox中JSFIDLE的修改版本,我看到列表视图中的参数如预期的那样出现:您是否将d3.xml与d3.xhr混淆了?不要这样认为。将其更改为d3.xhr不会改变任何东西。php脚本还应该返回有效的xml。当然,现在它返回一个错误,因为POST/GET是空的。但一般来说,这就是d3.xml的用途,不是吗?我对d3.xml的理解是,它执行GET请求,并将解析后的xml负载传递到回调中。为了更明确地构造AJAX请求(或者完全是POST请求),我认为您需要直接使用d3.xhr。d3.xml是用d3.xhr.OK在内部实现的,我花了几个小时试图理解它,但我完全不明白。我的console.log告诉我,即使使用d3.xml,它似乎也会根据设置的内容在POST/GET请求之间切换。正如我上面所说,使用d3.xhr,我得到了完全相同的问题。如果我将vars直接放入d3.xml调用中,即url,那么它可以工作。但是“.post”(“a=2&b=3”)…”中的参数如果不是AJAX请求的参数,那么它们有什么功能呢?是的,这里有些有趣的地方。如果你能在JSFIDLE上举个例子,我可以看看。是的,我讨厌这个!我觉得自己像个白痴。但是非常感谢你!不明白为什么这些参数没有出现在列表视图中,真让我抓狂。