【发布时间】:2017-10-01 15:02:02
【问题描述】:
我已经尝试了很多小时来获取一个远程 JSON 文件作为选项导入到 select2 输入中,但没有任何成功。
我使用的是 Select2 的 3.5.3 版本,它通过一个模块加载到 Drupal 中,所以我暂时还是坚持使用它。
我应该说我对 javascript 和 JSON 的经验很少,尽管我花了几个小时浏览各种 select2 教程,虽然脚本将输入更改为 select2 字段,但无论我在搜索中键入什么都只会返回一个字段错误,“加载失败”。
控制台中没有消息,所以我不知道哪里出错了。我怀疑它可能是 JSON 文件,为此我使用的是手动创建的 JSON 文件,我只是将其上传到名为 test.json 的 Web 服务器。这是其中的代码:
[
{
"entry_id": "45117",
"url": "http://www.example.com",
"title": "Title text 1",
"count": "2",
},
{
"entry_id": "45096",
"url": "http://www.example.com",
"title": "Title text 2",
"count": "5",
}
]
我希望在 select2 下拉列表中显示“title”字段,并在提交表单时将“entry_id”字段存储为值。我相信这就是 select2 的工作原理,但是字段名称为“id”和“text”,所以我需要我的 JS 来映射我的字段。
我无法更改 JSON 输出格式,因为我将使用的真实世界文件是通过第三方(我还无权访问,因此是测试文件)并且无法更改。
这是我的 JS:
$("#myfieldid").select2({
minimumInputLength: 2,
tags: [],
ajax: {
url: "http://mydomain.uk/test.json",
dataType: 'json',
type: "GET",
quietMillis: 50,
data: function (term) {
return {
term: term
};
},
results: function (data) {
return {
results: $.map(data, function (item) {
return {
text: item.title,
id: item.entry_id
}
})
};
}
}
});
这是我的 html:
<input type="text" id="myfieldid" name="myfieldname" value="" size="60" maxlength="255" tabindex="-1" style="display: none;">
为这篇冗长的帖子道歉,我真的被困在这里了,我完全期望一切都可以从我拥有的代码中运行,所以我的想法是它是 JSON 文件,以太格式或它的生成方式导致问题。
【问题讨论】:
-
您的测试文件是否托管在与 Drupal 安装相同的域中?如果没有,您可能会遇到跨域限制
-
是的,测试文件在同一个域中。
标签: javascript json jquery-select2