JQuery Ajax自动完成不显示结果

时间:2018-03-28 09:58:50

标签: javascript jquery ajax

我有一个加载Jquery自动完成的表单,我得到了结果,但它没有显示(带边框的空白)。就像这张图片一样: Here's my UI for fecth autocomplete

这是我的JQuery代码:

using System.Configuration;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;

namespace Settings
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            InitSettings();
        }
        private void InitSettings()
        {
            Window window = this;
            StackPanel stackPanel = new StackPanel();

            foreach (SettingsProperty settingsProperty in Properties.Settings.Default.Properties)
            {
                Binding binding = new Binding();
                binding.Source = settingsProperty;
                binding.Mode = BindingMode.TwoWay;
                binding.Path = new PropertyPath(settingsProperty.Name);

                Label label = new Label();
                label.Content = settingsProperty.Name;

                TextBox textBox = new TextBox();
                textBox.SetBinding(TextBox.TextProperty, binding);

                textBox.GetBindingExpression(TextBox.TextProperty).UpdateTarget();

                stackPanel.Children.Add(label);
                stackPanel.Children.Add(textBox);


            }
            window.Content = stackPanel;
        }
    }
}

这是AJAX的结果: Ajax Result

以前有人有同样的问题吗?我顺便使用Admin LTE模板。并且仍然想知道我的代码有什么问题。我尝试过导入其他<script type="text/javascript"> // Customer $('input[name=\'customer\']').autocomplete({ delay: 500, source: function (request, response) { $.ajax({ url: 'getCustomer.php?filter_name=' + encodeURIComponent(request.term), dataType: 'json', success: function (json) { response($.map(json, function (item) { return { label: item.c_name, value: item.c_id } })); } }); }, select: function (event, ui) { $('input[name=\'customer\']').val(ui.item.label); $('input[name=\'customer_id\']').val(ui.item.value); return false; }, focus: function (event, ui) { return false; } }); </script> 但仍无法正常工作。仍然显示像那样(空白边界)。仅供参考:控制台日志没有错误。

1 个答案:

答案 0 :(得分:1)

我猜你在$.map()修改它之前,你所显示的AJAX响应(作为图像)是来自服务器的实际响应。

您的$.map()函数会迭代来自服务器的json响应,并尝试在每个元素中使用c_namec_id属性名称。但是服务器中的json不包含这些属性名称 - 它包含customer_idname

因此$.map()创建了一堆空元素,并将它们传递给自动完成。自动完成然后有一组要显示的元素,但是没有任何标签,这就是为什么你看到带有空水平线的下拉菜单,而不是根本没有任何东西,这就是你在没有标签的情况下看到的响应/匹配。

您只需使用AJAX中的相同属性名称:

response($.map(json, function (item) {
    return {
        label: item.name,
        value: item.customer_id
    }
}));