Jquery $.ajax第一轮下拉列表填充不起作用

Jquery $.ajax第一轮下拉列表填充不起作用,jquery,Jquery,我遇到了一种情况,我点击一个动态链接,它会打开页面,触发$.ajax,它应该填充一个下拉列表,如果我点击刷新,它就会填充下拉列表,同样,如果我第一次点击另一个链接,它不会更新下拉列表,但是如果我回到浏览器,再次点击同一个链接,它就会填充,我是否遗漏了一些东西。:)这个有我。我在$(document.read()到$(window.load()之间移动了一些代码以进行测试 $(window).load(function () { var value = GetParam("bookchap

我遇到了一种情况,我点击一个动态链接,它会打开页面,触发$.ajax,它应该填充一个下拉列表,如果我点击刷新,它就会填充下拉列表,同样,如果我第一次点击另一个链接,它不会更新下拉列表,但是如果我回到浏览器,再次点击同一个链接,它就会填充,我是否遗漏了一些东西。:)这个有我。我在$(document.read()到$(window.load()之间移动了一些代码以进行测试

$(window).load(function () {
    var value = GetParam("bookchapter");
    $("#bookName").change(function () {
        LoadChapters(this.value);
    });
    var bookparts = value.split(".");

    var bname = bookparts[0];
    var bchapt = bookparts[1];
    $('#chapter option').empty();
    $('#bookName').val(bname);
    LoadChapters(bname);
    $('#chapter').val(bchapt);
});
$(document).ready(function () {
    var indexno = $("#bookName").prop("selectedIndex");
    var bookname = $("#bookName>option:selected").text();
    LoadChapters(bookname);
    //$("#bookName").change(function () {
    //    LoadChapters(this.value);
    //});

    var loc = document.location.hash.substring(1);
    $(document.getElementById(loc)).css("color", "blue");
    $(document.getElementById(loc)).css("font-weight", "bold");

});

function LoadChapters(book) {

    $.ajax({
        type: 'GET',
        url: '/Book/LoadChapters',
        data: 'bookName=' + book,
        contentType: 'application/json; charset=utf-8',
        cache: false,
        dataType: 'json',
    }).done(function (data) {
        alert($('#chapter option').length);
        if ($('#chapter option').length > 0) {
            $('#chapter').empty();
        }
        $(data).each(function () {

            var option = new Option(this.Value, this.Label);
            $("#chapter").append(option);
        });

        var val = GetParam("bookchapter");

        var bookparts = val.split(".");

        var bname = bookparts[0];
        var bchapt = bookparts[1];
        $('#chapter').val(bchapt);

    });
};

function GetParam(name) {
    var value = "";
    if (window.location.hash) {
        var k = window.location.toString();
        value = k.substring(0, k.indexOf("#") );
    }
    else {
        value = window.location.toString();
    }
    if (value.indexOf("?")) {
        value = value.substring(value.indexOf("?") + 1, value.length);
        var params = value.split("&");
        if (params) {
            for (var i = 0; i < params.length; i++) {
                var pair = params[i].split('=');
                if (decodeURIComponent(pair[0]) == name)
                    return decodeURIComponent(pair[1]);
            }
        }
    }
    else {
        return "";
    }


}
$(窗口)。加载(函数(){
var值=GetParam(“账簿章节”);
$(“#bookName”).change(函数(){
LoadChapters(此.value);
});
var bookparts=价值分割(“.”);
var bname=bookparts[0];
var bchapt=图书零件[1];
$(“#章节选项”).empty();
$('#bookName').val(bname);
加载章节(bname);
$('章').val(b章);
});
$(文档).ready(函数(){
var indexno=$(“#bookName”).prop(“selectedIndex”);
var bookname=$(“#bookname>选项:选中”).text();
装入章节(书名);
//$(“#bookName”).change(函数(){
//LoadChapters(此.value);
//});
var loc=document.location.hash.substring(1);
$(document.getElementById(loc)).css(“颜色”、“蓝色”);
$(document.getElementById(loc)).css(“字体重量”、“粗体”);
});
功能加载章节(书籍){
$.ajax({
键入:“GET”,
url:“/Book/LoadChapters”,
数据:“bookName=”+书本,
contentType:'application/json;charset=utf-8',
cache:false,
数据类型:“json”,
}).完成(功能(数据){
警报($(“#章节选项”).length;
如果($('#章节选项')。长度>0){
$(“#章”).empty();
}
$(数据)。每个(函数(){
var option=新选项(this.Value,this.Label);
$(“#章”)。附加(可选);
});
var val=GetParam(“账簿章节”);
var bookparts=val.split(“.”);
var bname=bookparts[0];
var bchapt=图书零件[1];
$('章').val(b章);
});
};
函数GetParam(名称){
var值=”;
if(window.location.hash){
var k=window.location.toString();
value=k.substring(0,k.indexOf(“#”);
}
否则{
value=window.location.toString();
}
if(值indexOf(“?”){
value=value.substring(value.indexOf(“?”)+1,value.length);
var params=价值分割(&);
如果(参数){
对于(变量i=0;i
index.cshtml

<h2>BOok</h2>
<form method="get" action="#">
@Html.DropDownList("bookName", (SelectList)ViewBag.bookName, "--Select--", "bookName")
@*(string)ViewBag.InBoek*@
@Html.DropDownList("chapter", Enumerable.Empty<SelectListItem>())

<button value="Submit" type="submit">Gaan na</button>

<table class="skrifkolom">
    <thead>
        <tr>
            <th>No</th>
            <th>Vers</th>
        </tr>

    </thead>
    @if (Model != null)
    {
        foreach (var item in Model)
        {
        <tr  id="@item.VersNommer">

            <td>@item.VersNommer</td>
            <td>@item.Vers</td>
        </tr> 
        }
    }
</table>


</form>
书
@Html.DropDownList(“bookName”,(SelectList)ViewBag.bookName,“--Select--”“bookName”)
@*(字符串)ViewBag.InBoek*@
@Html.DropDownList(“chapter”,Enumerable.Empty())
砷化镓钠
不
弗斯
@如果(型号!=null)
{
foreach(模型中的var项目)
{
@项目1.Versnomer
@项目1.Vers
}
}

尝试改用.get,并在成功时实现回调函数,看看运气是否更好。我看你的代码没有问题。你试过调试你的代码,看看ajax调用是否被调用了吗?@Chuck是的,它发出了“警报”,但第一轮从未到达$(数据)。每个(函数(){})我都从未使用过。get,让我查一下并尝试一下。并且没有控制台错误。在这种情况下,可能数据(在每个函数中)是空的。请使用浏览器中的网络控制台查看所接收的
数据的确切内容。。。