0

我已经创建了这个脚本,但我不知道为什么第二个选择框没有显示......

也许我的 ASP 错了??

看:

是演示页面

这是脚本:

<script type="text/javascript" src="jquery-1.7.1.min.js"></script>

<%
    strConnection ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("database/banco.mdb") &";"
    set objConn = Server.CreateObject("ADODB.Connection")
    objConn.open strConnection

    set rs_lojas = Server.Createobject("ADODB.RecordSet")
    rs_lojas.Open "select * FROM ondeencontrar WHERE estado = '"& request("estado")&"'", objConn

    If estado = "" Then
        estado = trim(Request("estado"))
        session("estado") = true
    End if

    If cidade = "" Then
        modelo = trim(Request("cidade"))
        session("cidade") = true
    End if
%>

<%  set rs_estado = Server.Createobject("ADODB.RecordSet")
    rs_estado.Open "SELECT distinct estado FROM ondeencontrar", objConn
%>

<script>
$("#first-choice").change(function() {
    $("#second-choice").load("estados.asp?estado=" + $("#first-choice").val());
    $("#second-choice").show("slow");   
});
$("#second-choice").change(function() {
    alter("TESTE");
});
</script>


<select id="first-choice">
    <option selected value="">Escolha um Estado</option>
    <%do while not rs_estado.eof%>
    <option value="<%=rs_estado("estado")%>"><%=rs_estado("estado")%></option>
    <%  rs_estado.MoveNext
    if rs_estado.EOF then Exit do %>
    <% Loop %>
</select>

<br /> <br />
<% 
If not trim(Request("estado")) = "" then
set rs_cidade = Server.Createobject("ADODB.RecordSet")
rs_cidade.Open "SELECT distinct cidade, estado  FROM ondeencontrar where estado = '"&estado&"'", objConn
%>
<select id="second-choice" style="display: none;">
    <option selected="<%=cidade%>"><%=cidade%></option>
    <% do while not rs_cidade.eof %>
    <option value="ondeencontrar.asp?estado=<%=request("estado")%>&cidade=<%=rs_cidade("cidade")%>"><%=rs_cidade("cidade")%></option>
<%
        rs_cidade.MoveNext
        if rs_cidade.EOF then Exit do
    %>
    <% Loop %>  
</select>
<%End If%>
4

3 回答 3

1

您的 jQuery 选择器需要在 document.ready 内,或者在 body 标记结束之前移动到最后。您正在选择尚未呈现的元素。

像这样:

$(function(){
    $("#first-choice").change(function() {
        $("#second-choice").load("estados.asp?estado=" + $("#first-choice").val());
        $("#second-choice").show("slow");   
    });
    $("#second-choice").change(function() {
        alter("TESTE");
    });
});

此 URL (http://fakedc.com/sites/luilui/teste.asp) 还需要返回 JSON 或 XML 对象,以便可以将其加载到第二个选择项中。目前没有。

由于您正在执行 AJAX 请求,因此该行也不起作用。

If not trim(Request("estado")) = "" then

第二个选择元素取决于第一个选择元素的选项选择,所以我会将第二个查询移动到 AJAX 调用中并填充第二个选择。

于 2012-04-04T01:21:22.653 回答
0

第二个选择甚至没有在页面中呈现,因为它没有通过If not trim(Request("estado")) = "" then条件。

于 2012-04-04T00:50:45.147 回答
0

来自萤火虫:

"NetworkError: 404 Not Found - http://fakedc.com/sites/luilui/jquery-1.7.1.min.js"

还:

$ is not defined

您可能想要检查 jQuery 包含的源路径。

于 2012-04-04T00:55:12.943 回答