两个ajax调用相同的函数

时间:2014-10-22 17:36:52

标签: ajax asp.net-mvc-4

我有一个Html.Textbox,我允许用户输入客户名称。一旦它们达到3个或更多字符,我就会调用自动完成功能,该功能会在下拉列表中返回客户列表。当他们做出选择时,我想做另一个ajax调用,它会返回一个新视图。我的问题是当我添加第二个调用时,自动完成中的数据被删除。这就是我到目前为止所做的:

        $("#CustomerSearch_FullName").autocomplete({
            minLength: 3,
            fontSize: '10px',
            source: function (request, response) {
                $.ajax({
                    url: '@Url.Action("CustomerNameAutoComplete", "Customer")',
                    async: false,
                    data: { searchstring: $.trim(request.term) },
                    success: function (data) {
                        response($.map(data, function (item) {
                            $('#CustomerIdDisplay').val(item.id);
                            $('#customer-select').val(item.id);
                            $('#Order_Customer_FirstName').val(item.firstname);
                            $('#Order_Customer_Email').val(item.email);
                            return { label: item.choice, id: item.id };
                        }));
                    },

                });
            },
            select: function (event, ui) {
                 id = ui.item.id;
                 $.ajax ({
                    url: '@Url.Action("Create", "Order")',
                    data: { customerId: id }
                 });

1 个答案:

答案 0 :(得分:1)

您只需要在select语句中添加return false:

,
select: function (event, ui) {
id = ui.item.id;
$.ajax ({
         url: '@Url.Action("Create", "Order")',
         data: { customerId: id }
       });
return false;
}

自动完成的默认操作'选择'是使用从自动完成框中选择的任何内容设置文本框值,如果您尚未准备好设置文本框,因为您想要根据选择执行另一个调用,则必须添加return false以防止默认行为。完成第二次通话后,您必须根据结果将文本框设置为您想要的内容。