繁体   English   中英

如何在JavaScript中加载外部文件?

[英]How to load an external file in JavaScript?

我正在编写一个脚本,您可以在其中添加和删除语言的下拉列表。 我可以使用它,但是我的问题是,是否有一种方法可以将代码的select标签部分外部化,因为我将有100多个选项,并在单击链接时将其加载到JavaScript中。 我不想在脚本中包含100个选项标签。 在PHP方面,我使用include语句加载我的选项列表。

这是我的问题所在。

$(function() {
    var scntDiv = $('#container');
    var i = $('#container p').size() + 1;

    $('#addScnt').live('click', function() {
        $('<p><select>I DONT WANT TO HAVE 100 OPTION TAGS HERE</select></p>').appendTo(scntDiv);
        i++;
        return false;
    });
});

这是我的代码,在脚本中带有一些选项标签。

完整代码

您可以将语言存储为对象。 它可以是静态文件,也可以是动态生成的响应。 然后,您可以将其用于动态选项创建:

MyLanguages.json

[
    {
        'Name': 'English',
        'Sign': 'EN'
    },
    {
        'Name': 'Spanish',
        'Sign': 'ES'
    },
    {
        'Name': 'Russian',
        'Sign': 'RU'
    }
]

您的页面

$.ajax({
    url: './MyLanguages.json',
    dataType: 'json'
}).done(function(data) {
  var $select = $("select");

  $(data).each(function() {
    $("<option/>").text(this.Name).val(this.Sign).appendTo($select);
  });
});

您可以将选项放在JSON文件中,然后使用AJAX(http)请求加载它们。

您可以将所有数据放入如下的Json文件中(例如):

{"student": [
  {
    "id": "1",
    "name": "Person1"
  },
  {
    "id": "2",
    "name": "Person2"
  },
  {
    "id": "3",
    "name": "Person3"
  }
]}

现在单击实现以下

     $('#addScnt').on('click', function() {
     //get a reference to the select element
$('<p><select id="test"></select></p>').appendTo(scntDiv);
        var $select = $('#test`enter code here`');</code>

        //request the JSON data and parse into the select element
        $.getJSON('student.JSON', function(data){

          //clear the current content of the select
          $select.html('');

          //iterate over the data and append a select option
          $.each(data.student, function(key, val){ 
            $select.append('<option id="' + val.id + '">' + val.name + '</option>');
          })
        });
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM