Javascript 相关丢包下行列表生成

Javascript 相关丢包下行列表生成,javascript,php,mysql,ajax,Javascript,Php,Mysql,Ajax,我试图使用ajax和php创建一个相关的下拉列表,但无法得到期望的结果 这是我的ajax代码 <html> <head> <title>findperson</title> <script type="text/javascript"> function configureDropDownLists(ddl1,ddl2) { var x=ddl1.value; var service; var url='service.php?data

我试图使用ajax和php创建一个相关的下拉列表,但无法得到期望的结果

这是我的ajax代码

<html>
<head>
<title>findperson</title>
<script type="text/javascript">
function configureDropDownLists(ddl1,ddl2) {
var x=ddl1.value;
var service;
var url='service.php?data='+x;
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new
ActiveXObject("Microsoft.XMLHTTP");
}
if(XMLHttpRequestObject) {
XMLHttpRequestObject.open("GET",url);
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) { 
service=XMLHttpRequestObject.responseText;
for (var i=0;i<service.length;i++ ){
var opt = service[i];
var el = document.createElement("option");
el.textContent = opt;
el.value = opt;
ddl2.appendChild(el);
}

}
}
XMLHttpRequestObject.send(null);
}
}
</script>
</head>
<body>
<form method="post" action="problem.php">
<select name="city" id="city"       onchange="configureDropDownLists(this,document.getElementById('service'))">
<option selected="selected" value="">City</option>
<option value="jhansi">Jhansi</option>
<option value="lucknow">Lucknow</option>
</select>
<select id="service">
<option selected="selected" value="">Service</option>
</select>
<input type="submit" name="proceed" value="Next"/>
</form>
</body>
</html>

芬德森
功能配置下拉列表(ddl1、ddl2){
var x=1.5%的值;
var服务;
var url='service.php?data='+x;
var XMLHttpRequestObject=false;
if(window.XMLHttpRequest){
XMLHttpRequestObject=新的XMLHttpRequest();
}else if(window.ActiveXObject){
XMLHttpRequestObject=new
ActiveXObject(“Microsoft.XMLHTTP”);
}
if(XMLHttpRequestObject){
open(“GET”,url);
XMLHttpRequestObject.onreadystatechange=函数()
{
如果(XMLHttpRequestObject.readyState==4&&
XMLHttpRequestObject.status==200){
服务=XMLHttpRequestObject.responseText;
对于(var i=0;i替换var_dump($service)

替换var_转储($service)


您的问题是,您正在从PHP返回
$service
数组,并将其作为字符串在AJAX中访问。
service=XMLHttpRequestObject.responseText;
返回字符串对象。在for循环中,您似乎试图通过数组进行索引。但是,您无法通过像这样的字符串,并得到你所期望的。 最好的方法是像Leo建议的那样使用
echo json_encode($service);
,然后在AJAX中使用
json.parse来转换
responseText

var json = JSON.parse(XMLHttpRequestObject.responseText);
然后进入for循环

var opt = json[/*i or column name*/];

注意:要在PHP中返回JSON字符串,必须设置标题:
header(“内容类型:application/JSON”);


希望能有所帮助!

您的问题是,您正在从PHP返回
$service
数组,并将其作为字符串在AJAX中访问。
service=XMLHttpRequestObject.responseText;
返回一个字符串对象。在for循环中,您似乎正在尝试通过数组进行索引,您无法通过这样的字符串进行索引,从而获得所需的内容。 最好的方法是像Leo建议的那样使用
echo json_encode($service);
,然后在AJAX中使用
json.parse来转换
responseText

var json = JSON.parse(XMLHttpRequestObject.responseText);
然后进入for循环

var opt = json[/*i or column name*/];

注意:要在PHP中返回JSON字符串,必须设置标题:
header(“内容类型:application/JSON”);


希望能有所帮助!

这里有几个问题:

  • 您的PHP没有发送正确的响应。您要做的是让PHP发送JSON响应
  • PHP发送此JSON响应后,您需要将其解析为一个对象
  • 一旦您的响应是对象格式,您就可以遍历结果
试试这个:

PHP(这是将从数据库返回的内容的示例):

JS:

function configureDropDownLists(ddl1, ddl2) {
    var url = 'submit.php?data=' + ddl1.value;
    var xmlhttp;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp) {
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                var json = xmlhttp.responseText;
                var obj = JSON.parse(json);
                for (var i = 0; i < obj.length; i++) {
                    var opt = obj[i];
                    var el = document.createElement("option");
                    el.textContent = opt.name;
                    el.value = opt.id;
                    ddl2.appendChild(el);
                }
            }
        };

        xmlhttp.open("GET", url, true);
        xmlhttp.send();
    }
}
功能配置下拉列表(ddl1、ddl2){
var url='submit.php?data='+ddl1.value;
var-xmlhttp;
if(window.XMLHttpRequest){
xmlhttp=新的XMLHttpRequest();
}else if(window.ActiveXObject){
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
if(xmlhttp){
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var json=xmlhttp.responseText;
var obj=JSON.parse(JSON);
对于(变量i=0;i
这里有几个问题:

  • 您的PHP没有发送正确的响应。您要做的是让PHP发送JSON响应
  • PHP发送此JSON响应后,您需要将其解析为一个对象
  • 一旦您的响应是对象格式,您就可以遍历结果
试试这个:

PHP(这是将从数据库返回的内容的示例):

JS:

function configureDropDownLists(ddl1, ddl2) {
    var url = 'submit.php?data=' + ddl1.value;
    var xmlhttp;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp) {
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                var json = xmlhttp.responseText;
                var obj = JSON.parse(json);
                for (var i = 0; i < obj.length; i++) {
                    var opt = obj[i];
                    var el = document.createElement("option");
                    el.textContent = opt.name;
                    el.value = opt.id;
                    ddl2.appendChild(el);
                }
            }
        };

        xmlhttp.open("GET", url, true);
        xmlhttp.send();
    }
}
功能配置下拉列表(ddl1、ddl2){
var url='submit.php?data='+ddl1.value;
var-xmlhttp;
if(window.XMLHttpRequest){
xmlhttp=新的XMLHttpRequest();
}else if(window.ActiveXObject){
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
if(xmlhttp){
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var json=xmlhttp.responseText;
var obj=JSON.parse(JSON);
对于(变量i=0;i
javascript文件中哪些数据包含可变服务。您可以调用console.log(服务);感谢它比javascript文件中包含可变服务的数据有效。您可以调用console.log(服务);感谢它有效
function configureDropDownLists(ddl1, ddl2) {
    var url = 'submit.php?data=' + ddl1.value;
    var xmlhttp;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp) {
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                var json = xmlhttp.responseText;
                var obj = JSON.parse(json);
                for (var i = 0; i < obj.length; i++) {
                    var opt = obj[i];
                    var el = document.createElement("option");
                    el.textContent = opt.name;
                    el.value = opt.id;
                    ddl2.appendChild(el);
                }
            }
        };

        xmlhttp.open("GET", url, true);
        xmlhttp.send();
    }
}