Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过php连接DB和D3。无法完成D3noob';s教程_Javascript_Php_Mysql_Json_D3.js - Fatal编程技术网

Javascript 通过php连接DB和D3。无法完成D3noob';s教程

Javascript 通过php连接DB和D3。无法完成D3noob';s教程,javascript,php,mysql,json,d3.js,Javascript,Php,Mysql,Json,D3.js,首先,我要感谢社区为我在这里学到的一切。现在我觉得我找不到答案 我在遵循此指南时遇到问题。我一步一步地(更新了WAMPSERVER版本)完成了这项工作。我一直在努力,没有发现我的错误。任何帮助都将不胜感激 这是我的第一个问题,请随意编辑、改进、更正、提问。谢谢:) data2.php文件: <?php $username = "homedbuser"; $password = "homedbuser"; $host = "localhost"; $d

首先,我要感谢社区为我在这里学到的一切。现在我觉得我找不到答案

我在遵循此指南时遇到问题。我一步一步地(更新了WAMPSERVER版本)完成了这项工作。我一直在努力,没有发现我的错误。任何帮助都将不胜感激

这是我的第一个问题,请随意编辑、改进、更正、提问。谢谢:)

data2.php文件:

<?php
    $username = "homedbuser"; 
    $password = "homedbuser";   
    $host = "localhost";
    $database="homedb";

    $server = mysql_connect($host, $username, $password);
    $connection = mysql_select_db($database, $server);

    $myquery = "
SELECT  `date`, `close` FROM  `data2`
";
    $query = mysql_query($myquery);

    if ( ! $query ) {
        echo mysql_error();
        die;
    }

    $data = array();

    for ($x = 0; $x < mysql_num_rows($query); $x++) {
        $data[] = mysql_fetch_assoc($query);
    }

    echo json_encode($data);     

    mysql_close($server);
?>
我通过将simple-graph.html和data2.php放在同一个文件夹中解决了这个问题。 在现在编辑的脚本中显示

d3.json("data2.php", function(error, data) 
而不是最初显示的内容

 d3.json("php/data2.php", function(error, data) 
我最后一次犯的错误让我大吃一惊:

TypeError: data is undefined
它指出了我脚本的第37行:

 data.forEach(function(d) {
        d.date = parseDate(d.date);
        d.close = +d.close;
    });
我被困在那里了。错误在哪里


提前感谢

Firefox()出现的错误是试图加载跨域内容的症状。这意味着(在这里的例子中)浏览器认为它试图访问文件
data2.php
,而该文件被注册为“出界”。Ths是现代浏览器的一项安全功能,因为它合理地期望来自同一域(与当前加载的文件相同)的文件受信任,而域外的文件可能有害()

测试很好地证实了这一点,您在Chrome中运行了相同的文件,并在开发人员控制台中收到错误“跨源请求仅支持HTTP”

问题最可能的原因是您必须支持开发环境的本地web服务器以某种方式配置错误,或者它没有运行


编辑:
PleaseTachmeHowtodoit
在下面的评论中提供了一些很好的反馈,有助于解释问题发生的原因。虽然本地web服务器正确地提供了显示的.html文件,但从MySQL数据库提取数据的php文件却没有。因此,不同浏览器的错误不尽相同。

您是否检查了对数据库的调用是否返回了您希望它返回的数据?查询正常,在DB中显示了我想要返回的内容。如果你想检查php是否按预期工作,我不知道怎么做。
error
是否包含任何内容?TypeError:Firefox开发者工具中的数据未定义,只指出了上面提到的一行。这就是你要问的吗?数据似乎不作为对象存在。变量
error
包含什么?
d3.json
回调的第一个参数。注意:相同的html文件在Firefox中不起作用?为什么?它显示了初始错误
TypeError:data是未定义的数据。forEach(函数(d){
,但是使用Chrome它工作得很好!在Chrome上工作!步骤:1。-在Apache web服务器中正确执行并保存所需的文件2。-在Chrome.org/for-testers/command-line-flags之后禁用web安全性(不确定这是否有必要,但在它显示另一个错误之前)因此它显示类似于
“…Chrome\Application\Chrome.exe”--禁用web安全性(请注意
--
之间的空格)。对不起,我不能投票赞成,当我得到15个代表时,我会的。非常感谢你的帮助。-嗯…当然欢迎你的帮助,但你对问题解决方案的解释让我想知道问题是否得到解决。通过禁用Chrome浏览器中的安全性,你(可能)做到了告诉它忽略跨域冲突。这可能会掩盖Firefox仍然看到的服务器设置的进一步问题。您正在运行什么类型的服务器设置?正如您在教程中所说的WAMP。文件保存在www目录的子文件夹中。我有一个调用.php(data2)的本地(c:\[…].html)文件和本地主机服务器内的d3.v3文件。您让我思考了一下。如果我错了,请纠正我:我不太理解“从服务器运行”的概念。我从“C:\\“同时请求指向网页的链接。这意味着一个
跨源请求
,我通过从服务器运行.html文件127.0.0.1/subfolder/file.html来解决。不必禁用Chrome的安全性。
TypeError: data is undefined
 data.forEach(function(d) {
        d.date = parseDate(d.date);
        d.close = +d.close;
    });