jQuery AJAX,条件不起作用

本文关键字:不起作用 条件 AJAX jQuery | 更新日期: 2023-09-27 18:29:21

我的函数按ID和名称进行搜索,我在MVC中进行搜索。问题是,它进入了条件(if),AJAX正确运行,但随后它也进入了else并运行它。显然,我在对话框中的数据是空白的,因为它发送了alert窗口。它有时会正确打开对话框,但当我更改模块并返回时,ifelse会再次运行,并显示空白对话框。

会发生什么?当我第一次点击时,它会阻塞,我再次点击,然后数据就会出现。。。

function buscaProducto(url, cod, name) {
    if (cod.length != 0 || name.length != 0) {
        var producto = name;
        var identidad = cod;
        $.ajax({
            url: url,
            type: "POST",
            dataType: "html",
            error: AjaxFailure,
            beforeSend: AjaxBegin,
            data: { productoNombre: producto, identidad: identidad },
            success: function (data) {
                $("#dialog").dialog({
                    bigframe: true,
                    modal: true,
                    autoOpen: true,
                    width: 900,
                    heigth: 700,
                    resizable: false,
                });
                $("#progressbar").hide();
                $("#dialog").html(data);
                console.log("Entregó los datos al #dialog");
            }
        });
    }
    else {
        alert("<p>Debe ingresar una opcion de busqueda</p>", $(window).height() / 3)
        this.abort();
    }
} 

我认为缓存可能被卡住了

控制器

[HttpPost]
        public ActionResult BusquedaProducto(string productoNombre, string identidad)
        {
            if (productoNombre.Equals(""))
            {
                if (identidad.Equals(""))
                {
                    return HttpNotFound();
                }
                else
                {
                    var code = (from p in db.GN_Portafolio
                                where p.CodigoPortafolio.StartsWith(identidad) && p.SenSerial == true
                                select p).ToList();
                    if (code.Equals("0"))
                    {
                        return HttpNotFound();
                    }
                    else
                    {
                        return View(code);
                    }
                }
            }
            else
            {
                var producto = (from p in db.GN_Portafolio
                                where p.NombrePortafolio.StartsWith(productoNombre)
                                select p).ToList().Take(100);
                if (producto.Equals("0"))
                {
                    return HttpNotFound();
                }
                else
                {
                    return View(producto);
                }
            }
        }

视图

@model IEnumerable<SifActivoFijo.Models.GN_Portafolio>
<form class="items">
    <label>items por Pagina: </label>
    <select>
        <option>5</option>
        <option>10</option>
        <option>15</option>
    </select>
</form>
<input name="button" type="button" onclick="$('#dialog').dialog('close');" value="Cerrar" />
<table  class="tablas">
    <thead>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.CodigoPortafolio)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.NombrePortafolio)
        </th>
        <th></th>
    </tr>
</thead>
    <tbody id="pagina">
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.CodigoPortafolio)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.NombrePortafolio)
                </td>
                <td>
                    <input class="seleccion" type="button" value="Seleccionar" />

                </td>
            </tr>
        }
    </tbody>
</table>
<div class="holder"></div>
<script type="text/javascript">
    $(document).ready(function () {
        $('input.seleccion').click(function () {
            var codigo = $(this).parent().prev().prev();
            var nombre = $(this).parent().prev();
            $('#activoFijo_GN_Portafolio_CodigoPortafolio').val($.trim(codigo.text()));
            $('#GN_Portafolio_CodigoPortafolio').val($.trim(codigo.text()));
            $('#nombrePortafolio').val($.trim(nombre.text()));
            $("#activoFijo_DescripcionActivoFijo").val($.trim(nombre.text()));
            document.getElementById("dialog").innerHTML = '<div id="progressbar" class="progressbar" style="display: none;"></div>';
            $("#dialog").dialog('close');
        });
    });

jQuery AJAX,条件不起作用

您在服务器端方法中使用返回类型作为ActionResult。所以这会返回您的整个视图,然后页面将被重新加载。所以这种情况已经发生了。因此,请将您的方法返回类型更改为任何其他类型,如字符串、Jsonresult等,