2016-06-13 4 views
1

Я запрашивая данные из моего data.php файла со следующей просьбой:Почему мой запрос xmlhtpp возвращает пустой массив?

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); 
+0

опубликовать полный код АЯКС –

+0

'xmlhttp.send («запрос = getchartdata &»+«графика =»+ chart + '&' + 'key =' + key); 'недостаточно, чтобы понять, где проблема. –

+0

вы печатаете свою полную переменную 'post' в' data.php' и видите, какое значение у вас есть в переменной 'post' –

ответ

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); 
+0

Как указано в комментарии выше, проблема исходит из запроса SQL. Но, спасибо, я перестрою свой код, как вы предлагаете. –

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