为什么我的xmlhtpp请求返回一个空数组?

时间:2016-06-13 07:42:17

标签: php mysql

我正在使用以下请求从data.php文件中请求数据:

xmlhttp.send('request=getchartdata&'+'chart='+chart+'&'+'key='+key);

以下是data.php的内容:

if ($_POST["request"] == "getchartdata") {

    /*Removing dash from key*/
    $key = str_replace("-", "", $_POST["key"]);

    if ($_POST["chart"] == "associationEvolutionSubventions") {
        $result = $conn->prepare("SELECT grantYear, grantAmount FROM granttoassociation WHERE HEX(grantReceiver) = ? ");
        /*grantReceiver is in binary*/
    }

    $result->execute(["{$key}"]);
    while($rs = $result->fetch()) {
        if ($outp != "") {
            array_push($outp,$rs); 
        }
    }
}

$outp = json_encode($outp);
echo($outp);

但是,我在xmlhttp.responseText中得到一个空数组。

与MySQL数据库的连接不是问题(另一个xmlhtpp请求正确地返回数据)。有几点我不确定我的代码:

  • $result->execute(["{$key}"]);这里的语法是否正确?
  • HEX(grantReceiver)如果grantReceiver是二进制文件,这样做是否正确?
  • $key = str_replace("-", "", $_POST["key"]);这是删除破折号的正确语法吗?

编辑:这是所要求的完整AJAX代码。

xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        console.log(xmlhttp.responseText);
    }
};
xmlhttp.open("POST", "wp-content/plugins/mygaloochart/data.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send('request=getchartdata&'+'chart='+chart+'&'+'key='+key);

1 个答案:

答案 0 :(得分:0)

重新排列代码。在打开请求和设置请求标题后,您应该听取onreadystate(以下是您修改过的代码):

xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "wp-content/plugins/mygaloochart/data.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    console.log(xmlhttp.responseText);
  }
};
xmlhttp.send('request=getchartdata&'+'chart='+chart+'&'+'key='+key);