【问题标题】:Joomla 1.5 AJAX XMLHttpRequest Code Not Working in Joomla 2.5Joomla 1.5 AJAX XMLHttpRequest 代码在 Joomla 2.5 中不起作用
【发布时间】:2014-07-10 14:30:08
【问题描述】:

谁能告诉我为什么这在 Joomla 2.5 中不起作用但在 1.5 中起作用?

我收到的错误是 - Uncaught TypeError: Cannot read property 'childNodes' of null ajax.php:33

如果我输入网址:index.php?option=com_mmg&controller=ajax&task=listModels&make_id=3 它按预期输出 ajxGetModels 函数。

我知道 Joomla 2.5 Ajax Calls 发生了变化或类似的事情,但是我找不到在线解决方案将我下面的内容转换为 2.5 版本的方式。

任何帮助或指导都会非常有用。谢谢。

function ajxGetModels(reload)
{
    if (reload) {
        var use_make = 'sel_make_id';
    } else {
        var use_make = 'make_id';
    }
    var make_id = document.getElementById(use_make).value;
    var xhr = createXHR();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                var model=document.getElementById("model_id");

                try //Internet Explorer
                {
                    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                    xmlDoc.async="false";
                    xmlDoc.loadXML(xhr.responseText);
                }
                catch(e)
                {
                    try //Firefox, Mozilla, Opera, etc.
                    {
                        parser=new DOMParser();
                        xmlDoc=parser.parseFromString(xhr.responseText,"text/xml");
                    }
                    catch(e) {alert(e.message)}
                }
                var options =xmlDoc.getElementsByTagName("options").item(0);
                model.innerHTML='';

                for (i=0; i < options.childNodes.length; i++){          
                    var newoption=document.createElement("option");
                    var myoption=options.childNodes[i];
                    var newtext=document.createTextNode(myoption.childNodes[0].nodeValue);

                    newoption.setAttribute("value",myoption.getAttributeNode("id").value)
                    newoption.appendChild(newtext);
                    model.appendChild(newoption);
                }
                    document.getElementById('model_id').disabled=false;
                    document.getElementById('year_id').innerHTML='';
                    document.getElementById('year_id').disabled=true;

                    if (reload) {
                        var preVal = document.getElementById('sel_model_id').value;
                        setMmgVal('model_id',preVal);
                        ajxGetYears(true);
                    }
            } else {
                alert('Error code ' + xhr.status);
            }
        }
    }

    xhr.open("GET","index.php?option=com_mmg&controller=ajax&task=listModels&make_id="+make_id,true);
    xhr.send(null);

}
     function createXHR() {
    var xhr = null;
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            try {
                xhr = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e) {}
        }
    return xhr;
}

【问题讨论】:

    标签: ajax xmlhttprequest joomla2.5 joomla1.5


    【解决方案1】:

    它不起作用,因为在 configuration.php 中 $error_reporting 被设置为“最大值”。

    尽管如此 - 必须有更好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-19
      • 2013-10-30
      • 2013-05-01
      • 2014-04-09
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多