JS,Ajax和为什么我写的脚本无法打开XML文件?

时间:2018-01-11 16:32:49

标签: javascript jquery html ajax xml

我的Javascript出现问题,即使我的研究工作也无法找到修复方法。

我正在尝试调用一个使用Ajax读取xml文件的函数,但我无法按照我想要的方式加载文件。 如果我从我的HTML页面调用我的函数LoadXML(),该函数工作正常。 (我得到了我的XML文件的内容) 如果我从我的JS函数langue()调用我的函数LoadXML(),它就不起作用。 (XML文件未加载)

当有人在下拉菜单中选择一个选项时,我在HTML页面中调用langue()。

函数LoadXML():

$.ajax({
        type: "GET",
        url: "resource-fr-fr.xml",
        dataType: "xml",
        success: function (xml) {
            alert("ok")
        }
})

功能语言():

localStorage['langue'] = document.getElementById('languages').value
localStorage.removeItem('filexml')
LoadXML(); //this doesn't work i can't see the alert('ok')
var test = localStorage['filexml'];
console.log(test);
location.reload(false);

我如何在HTML中调用langue():

<select id="languages" onchange="langue()">
    <option value="en-us">English</option>
    <option value="es-mx">Mexicano</option>
    <option value="fr-fr">Français</option>
</select>

我如何在HTML中测试LoadXML():

 window.onload = LoadXML(); //This works i see the alert('ok')

我做错了吗?如果是这样的话,我该如何解决?你知道更好的方法吗?

1 个答案:

答案 0 :(得分:0)

好几次尝试后,我修好了。  我将函数Langue()放在我的LoadXML()

 $.ajax({
    type: "GET",
    url: "resource-"+document.getElementById('languages').value+".xml",
    dataType: "xml",
    success: function (xml) {
        //Delete the old language
        localStorage.removeItem('filexml')
        //Load the new XML language file inside localStorage as a string
        $(xml).find('data').each(
              function () {
                  console.log("I'm inside")
                  localStorage.setItem('filexml', localStorage["filexml"] + "#" + $(this).attr('name') + "$" + $(this).find('value').text()); //Nom de la branche (Data name) + Valeur de la branche (Value)
                  i++;
              });
        //Change the language
        langue();
    }
})