我有一个加载Jquery自动完成的表单,我得到了结果,但它没有显示(带边框的空白)。就像这张图片一样:
这是我的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;
}
}
}
以前有人有同样的问题吗?我顺便使用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>
但仍无法正常工作。仍然显示像那样(空白边界)。仅供参考:控制台日志没有错误。
答案 0 :(得分:1)
我猜你在$.map()
修改它之前,你所显示的AJAX响应(作为图像)是来自服务器的实际响应。
您的$.map()
函数会迭代来自服务器的json
响应,并尝试在每个元素中使用c_name
和c_id
属性名称。但是服务器中的json
不包含这些属性名称 - 它包含customer_id
和name
。
因此$.map()
创建了一堆空元素,并将它们传递给自动完成。自动完成然后有一组要显示的元素,但是没有任何标签,这就是为什么你看到带有空水平线的下拉菜单,而不是根本没有任何东西,这就是你在没有标签的情况下看到的响应/匹配。
您只需使用AJAX中的相同属性名称:
response($.map(json, function (item) {
return {
label: item.name,
value: item.customer_id
}
}));