Javascript Ajax MVC在表格行中隐藏按钮

Javascript Ajax MVC在表格行中隐藏按钮,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我在表中有一个dropdownlist和按钮,它应该显示数据库中是否有值。在我的下拉列表中,我发送到一个函数 onchange = "getInfoid(this)" 职能: function getInfoid(myvalue) { var typeid = $(myvalue).val(); $.ajax({ url: '/mycontroller/GetInfoUrl', contentType: 'appl

我在表中有一个dropdownlist和按钮,它应该显示数据库中是否有值。在我的下拉列表中,我发送到一个函数

onchange = "getInfoid(this)"
职能:

function getInfoid(myvalue) {
        var typeid = $(myvalue).val();
        $.ajax({
            url: '/mycontroller/GetInfoUrl',
            contentType: 'application/html; charset=utf-8',
            type: 'Get',
            data: {
                id: typeid
            },
            dataType: 'html'
        })
            .success(function (result) {
                var tr = $($(myvalue).parents("tr")[0]);
                var button = tr.find("button#Details0");
                $(button).attr("onclick", "viewOhaInfo('" + result + "')");
                $(button).show();
            })
            .error(function (result) {
             var tr = $($(myvalue).parents("tr")[0]);
             tr.find("button#Details0").hide();
            });
    };
脚本不会显示或隐藏按钮。检验它;我尝试使用Ajax脚本来显示和隐藏一个div,并尝试在没有Ajax的情况下使用相同的脚本来隐藏和显示表中的按钮,这两种方法都有效。我是否丢失了myvalue变量的值,或者还有什么原因

编辑 问题在于我对成功和错误的理解,我将脚本更改为:

 .success(function (data) {
               if (data == null) {
                   var tr = $($(myvalue).parents("tr")[0]);
                   tr.find("button#Details0").hide();
               } else {

                   var tr = $($(myvalue).parents("tr")[0]);
                   var button = tr.find("button#Details0");
                   $(button).attr("onclick", "viewOhaInfo('" + data + "')");
                   $(button).show();
               }

这就解决了问题。谢谢大家的帮助。

jqXHR.success和jqXHR.error不推荐使用。阅读api

jqXHR.donefunction数据,textStatus,jqXHR{};替代方案 构造成功回调选项,.done方法替换 不推荐使用的jqXHR.success方法。有关详细信息,请参阅deferred.done 实施细节

jqXHR.failfunction jqXHR,textStatus,error抛出{};一 错误回调选项的替代构造.fail方法 替换不推荐使用的.error方法。有关详细信息,请参阅deferred.fail 实施细节

因此,请将脚本修改为:

$.ajax({
        url: '/mycontroller/GetInfoUrl',
        contentType: 'application/html; charset=utf-8',
        type: 'Get',
        data: {
            id: typeid
        },
        dataType: 'html'
    })
        .done(function (result) {
            var tr = $($(myvalue).parents("tr")[0]);
            var button = tr.find("button#Details0");
            $(button).attr("onclick", "viewOhaInfo('" + result + "')");
            $(button).show();
        })
        .fail(function (jqXHR, textStatus) {
         var tr = $($(myvalue).parents("tr")[0]);
         tr.find("button#Details0").hide();
        });

不知道你在问什么或者你的问题是什么好的,我编辑了这个问题。脚本不会显示或隐藏按钮。谢谢您可能需要查看控制台以查看是否有任何错误。页面中只有一个元素具有该ID。ID的定义必须是唯一的,所以这可能是您的问题$Details0.hide应该在只有一个ID的情况下工作。否则,使用类而不是IDI尝试使用唯一ID,但它不工作。谢谢