我有一个用于设置用户位置的ajax脚本,表单输入是
<select id="region" onchange="city('/ajax-city.php')" ...>
<option>
<select ..\>
<option...>
当第一个选择列表中的一个选项被更改(onchange)时,ajax请求被发送到服务器并且响应被处理并且第二个<select>
被更新。
它是用于更新<select>
var city = function(page)
{
if(xhro){ // stands for Xml Http Request Object
var fv = document.getElementById('region').value;
var obj = document.getElementById('city-element');
obj.innerHTML="<span style=\"display:block; width:200px; float:right; padding:0 10px 10px 0; font-family:Tahoma; font-size:12px;\"> please wait.. </span>";
xhro.open("POST",page);
xhro.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhro.onreadystatechange = function()
{
if(xhro.readyState==4 && xhro.status==200)
{
obj.innerHTML = "<select name=\"city\" onchange=\"subcity('ajax-subcity.php')\" id=\"city\" >"+xhro.responseText+"</select>";
}
}
xhro.send("city=" + fv);
}
你可以看到我的函数添加了onchange属性,以便在触发<select name="city">
onchange事件时发送另一个ajax请求,但是当我点击<select name="city">
中的下一个选项时,在控制台中萤火虫我得到这个错误
subcity is not a function
subcity("ajax-subcity.php");
当我在控制台中键入函数时,firebug会识别它,我认为当ajax请求更新DOM元素时,事件不会像页面正常加载时那样处理。
但这只是一个建议,考虑处理函数city()
并更新<select name="city>"
,但在下一级(subcity()
)没有更新发生
并使用php脚本创建<option ..>
。
它认为问题不在于subity()函数,因为它在firebug中工作BTW很好被提及。
var subcity = function(page){
alert("problem solved");
if(xhro){
var fv = document.getElementById('city').value;
var obj = document.getElementById('subcity-element');
obj.innerHTML="<span style=\"display:block; width:200px; float:right; padding:0 10px 10px 0; font-family:Tahoma; font-size:12px;\"> please wait</span>";
xhro.open("POST",page);
xhro.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhro.onreadystatechange = function(){
if(xhro.readyState==4 && xhro.status==200){
obj.innerHTML = "<select name=\"subcity\" id=\"subcity\" >"+xhro.responseText+"</select>";
}
}
xhro.send("city=" + fv);
}
答案 0 :(得分:2)
我引用:
if(xhro.readyState==4 && xhro.status==200){
obj.innerHTML = "<select name=\"subsity\" id=\"subcity\" >"+xhro.responseText+"</select>";
}
更改您在选择中使用的次级 ID,请使用“sub-city”而不是“次级”,否则它将覆盖您的次级功能!!! < / p>
ids被javascript使用,这就是为什么它们必须是唯一的。,它不仅仅适用于CSS。
编辑:
为城市和城市功能做同样的事情
PS:你的代码很乱,严重!解决它。