【发布时间】:2013-08-06 15:19:14
【问题描述】:
我有一个简单的 CFC 返回用户名和 ID 号。 CFC 可以正常工作,并且已经在浏览器上进行了测试以返回 JavaScript 结果。没有问题。这是输出:
{
"COLUMNS":["USERNAME","ID"]
,"DATA":[ ["jclark","001650472"]
,["jclark1","000086949"]
,["jclarke","002386440"]
]
}
当我尝试将它与 Twitter Typeahead 一起使用时,我没有返回任何结果。在萤火虫中,我可以看到来自 CFC/JS 的成功响应,但是一旦发生这种情况,我就会收到错误 JS 错误。
return this.name.toLowerCase();
This.name is undefined
似乎我的数据没有从 CFC 正确返回。
这是我的 js/html
<script>
$(document).ready(function () {
$('#add_user').typeahead({
source: function (query, process) {
var $url = "/glv/_includes/gl_data.cfc?method=search_accounts_by_username&returnformat=json&username=" + query;
var $datas = new Array;
$datas = [""];
$.ajax({
url: $url,
dataType: "json",
type: "GET",
success: function (data) {
$.map(data, function (data) {
var group;
group = {
id: data.ID,
name: data.USERNAME,
toString: function () {
return JSON.stringify(this);
//return this.variable;
},
toLowerCase: function () {
return this.name.toLowerCase();
},
indexOf: function (string) {
return String.prototype.indexOf.apply(this.name, arguments);
},
replace: function (string) {
var value = '';
value += this.name;
if (typeof (this.name) != 'undefined') {
value += ' <span class="pull-right muted">';
//value += this.name;
value += '</span>';
}
return String.prototype.replace.apply('<div style="padding: 10px; font-size: 1em;">' + value + '</div>', arguments);
}
};
$datas.push(group);
});
process($datas);
}
});
},
property: 'username',
items: 10,
minLength: 2,
updater: function (item) {
var item = JSON.parse(item);
$('#id').val(item.id);
$('#add_user').val(item.name);
return item.name;
}
});
});
</script>
<div class="span9">
<h1>Administration</h1>
<hr>
<h3>Add New User</h3>
<div class='search'>
<form class="form-search">
<input type="text" class="input-medium search-query" placeholder="Username" data-provide="typeahead" id="add_user" name="add_user" autocomplete="off">
<button type="submit" class="btn">Search</button>
</form>
</div>
</div>
【问题讨论】:
-
您是否偶然看到两个斜杠
//预先添加到来自您的 CFC 的 JSON 返回值?如果是这样,您将需要在处理退货之前剥离它们。参考 - stackoverflow.com/questions/15501123/… -
这是输出
{"COLUMNS":["USERNAME","ID"],"DATA":[["jclark","001650472"],["jclark1","000086949"],["jclarke","002386440"]]} -
我们的开发服务器中的设置是关闭的,没有//前缀
-
好的,我想这可能会吸引你。我的建议是简化您的代码以调试问题。进行 AJAX 调用并提醒返回的值或使用浏览器的 JS 控制台。如果看起来没问题,那么添加另一段代码并再次测试,等等。
-
我从警报
[object Object]得到这个输出
标签: twitter-bootstrap coldfusion coldfusion-9 bootstrap-typeahead