AJAX responseText не определен после запроса GET к .php - PullRequest
2 голосов
/ 26 июля 2011

Я пытаюсь получить список устройств из базы данных MySQL, которую затем форматирую в элементе html select / option в моем .php, а затем выводю строку html для вставки на мою главную страницу, но этоне вернет строку, которую я передаю, в responseText.

Вот мой .php:

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "admin";
$dbname = "devices";
    //Connect to MySQL Server
$con=mysql_connect($dbhost, $dbuser, $dbpass);
    //Select Database
mysql_select_db($dbname) or die(mysql_error());

$sql="SELECT DISTINCT device_name FROM device_graphs";
$result=mysql_query($sql, $con);

$responsetxt="Hello all :)";
$counter=0;
while($row = mysql_fetch_array($result))
{
    $responsetxt .= "<option value=$counter>$row[0]</option>";
    $counter++;
}

echo $responsetxt;

?>

Я пытаюсь создать выпадающий список имен устройств на основе устройств, перечисленных вмой дб.Когда я открываю только .php файл в моем браузере, он правильно отображает эхо.

function deviceDropdown(monNum, insideHTML)
{
var ajaxRequest;  // The variable that makes Ajax possible! 
try{
    // Opera 8.0+, Firefox, Safari
    ajaxRequest = new XMLHttpRequest();
} catch (e){
    // Internet Explorer Browsers
    try{
        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try{
            ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e){
            // Something went wrong
            alert("Your browser broke!");
            return false;
        }
    }
}
ajaxRequest.onreadystatechange = function(){
    if(ajaxRequest.readyState == 4){
        alert(ajaxRequest.responseText);
        ajaxresponse = ajaxRequest.responseText;
        alert(ajaxresponse);
        deviceDropdown_pt2(monNum, ajaxresponse, insideHTML);
    }
}
ajaxRequest.open("GET", "device_list.php", true);
ajaxRequest.send(null); 
}

ajaxresponse не определен каждый раз, когда я пытаюсь это сделать;это просто выскакивает 2 пустых окна предупреждения javascript.Если я запускаю только .php в своем браузере, я получаю правильные выходные данные, отображаемые в моем окне, поэтому я не думаю, что это проблема с php, если нет проблемы передачи html через php через ajax.остальная часть выпадающего кода:

function deviceDropdown_pt2(monNum, ajaxresponse, insideHTML)
{
//Sets the action to occur when a selection is made in the device dropdown, 
//  in this case the properties dropdown menu
insideHTML=insideHTML + "<select onchange='propertiesDropdown(this.options[this.selectedIndex].value, " +  monNum + ")'>";  
insideHTML=insideHTML + "<option value=\"-1\">-Select a Device-</option>";
insideHTML = insideHTML + ajaxresponse; 
insideHTML=insideHTML + "</select>";
}

Мой основной .js имеет следующие значения var iframe=document.getElementById("bdy"); и:

insideHTML="<table id=\"dashboard\" align=\"left\" valign=\"top\" border=\"0\">";
insideHTML=insideHTML + "<tr>";
insideHTML=insideHTML + "<td id=\"menu1\" width=\"800\">";
deviceDropdown("1", insideHTML);
insideHTML=insideHTML + "</td></tr>"; 
iframe.innerHTML=insideHTML;

1 Ответ

0 голосов
/ 03 августа 2011

Вы должны использовать http://jquery.com/

простой пример того, чего вы хотите достичь:

$.get('ajax/test.html', function(data) {
    $('.result').html(data);
    alert('Load was performed.');
});

и все, что вам нужно сделать, это включить в заголовок:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script
...