【发布时间】:2013-06-17 11:40:21
【问题描述】:
我希望你能用这个为我指明正确的方向。
我有以下 JavaScript:
var url = '/admin/list-contacts';
var contacts;
$.ajax({
async: false,
type: 'GET',
url: url,
dataType: 'json',
success : function(data) { contacts = data; }
});
var accountId = $('#account_id option:selected').val();
if(accountId === 'NULL') {
$('.delegates .contacts, .delegates .delegate_status_id, .delegates .event_id, .delegates .price, .opportunities .contacts, .notes .contacts').hide();
} else {
$('.delegates .contacts, .delegates .delegate_status_id, .delegates .event_id, .delegates .price, .opportunities .contacts, .notes .contacts').show();
}
$('#account_id').change(function() {
select = $("<select name='contact_id' id='contact_id'>");
for(var i in contacts) {
if(contacts[i]['account_id'] === $(this).val()) {
select.append('<option value="' + contacts[i]['id'] + '">' + contacts[i]['name'] + '</option>');
} else {
select.html('<option value="NULL">No Contacts</option>');
}
}
var accountId = $('#account_id option:selected').val();
if(accountId === 'NULL') {
$('.delegates .contacts, .delegates .delegate_status_id, .delegates .event_id, .delegates .price, .opportunities .contacts, .notes .contacts').hide();
$('.delegates .contacts .controls, .opportunities .contacts .controls, .notes .contacts .controls').html('');
} else {
$('.delegates .contacts, .delegates .delegate_status_id, .delegates .event_id, .delegates .price, .opportunities .contacts, .notes .contacts').show();
$('.delegates .contacts .controls, .opportunities .contacts .controls, .notes .contacts .controls').html(select);
}
});
基本上,它正在做的是通过 JSON 使用 Laravel 4 中的此代码提取联系人列表:
public function contacts()
{
return Contact::select('contacts.id', 'contacts.account_id', DB::raw('concat(contacts.first_name," ",contacts.last_name) AS name'))->get();
}
一切顺利,联系人变量填充了正确的数据,并且我在整个过程中,我在控制台中记录了该变量的结果,并且在选择框中更改时,它包含正确的数据.问题在于 for 循环中的 if 语句。
如果系统中只有 1 个有联系人的帐户,则它可以正常工作,并且所有联系人都被拉出。一旦您添加另一个帐户,它就会失败并恢复使用 else 语句中的代码。有趣的是,您删除了 if 语句的 else 部分,它可以完美运行。不过,我需要“无联系人”位,以表明如果帐户没有联系人,则表明没有联系人。
各位有什么想法吗?
编辑:我应该提到,联系人下拉列表的数量取决于先前包含系统中帐户的下拉列表。 JavaScript 检查所选帐户的 ID 并提取正确的联系人。
【问题讨论】:
-
我觉得你可以找到一个更好的标题..
-
请不要忘记提及您正在使用的框架(我编辑了这个问题的标签以反映您的)。这很重要,因为 stackoverflow 的标签过滤系统依赖于此。谢谢。
-
好的。对不起,谢谢。
-
AJAX 调用不应同步。
-
为什么?请给个理由好吗?
标签: javascript jquery ajax laravel laravel-4