xmlhttp.responseText;返回整页html结果而不仅仅是列表选项?

时间:2012-01-26 18:22:51

标签: php javascript mysql ajax joomla

我有一个用于管理研讨会的joomla组件。

在编辑视图中,除其他字段外,我还有3个选择列表:

  1. 主题列表
  2. 级别列表
  3. 奖金币
  4. 我正在尝试根据主题列表选项中选择的内容填充级别列表选项。

    所以在主题列表onchange中我添加了对包含AJAX请求的.js文件的调用:

    var xmlhttp;
    
    function listUpdate(str)
    {
    if (str=="")
    {
        document.getElementById("jform_work_topic_level_idfk").innerHTML="";
        return;
    }
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
    {
        alert("Browser does not support HTTP Request");
        return;
    }
    var url = document.URL+"&tid="+str;
    xmlhttp.onreadystatechange=stateChanged;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
    }
    
    function stateChanged()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
                 document.getElementById("jform_work_topic_level_idfk").innerHTML=xmlhttp.responseText;
    }
    }
    
    function GetXmlHttpObject()
    {
    if (window.XMLHttpRequest)
    {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    if (window.ActiveXObject)
    {
        // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
    }
    

    它工作正常,级别列表选项使用所需的值填充,具体取决于在主题列表中选择的内容。问题是,级别列表不仅填充了这些选项,还包括主题列表和奖金币的选项。

    我认为这是因为xmlhttp.open(“GET”,url,true);请求生成整个表单html和xmlhttp.responseText的url;正在返回整个html页面代码。如何才能检索级别列表的选项?

    非常感谢!

2 个答案:

答案 0 :(得分:0)

在检索特定的AJAX数据时,您有两种选择。

您可以向服务器发送请求以仅获取特定值,并让服务器端脚本将其拆分。例如,您可以加载GET参数?stuff=a的页面,并告诉PHP或CGI脚本过滤掉($_GET["stuff"] == "a")以外的无关内容。这可能是最快捷,最安全的方式。

您的第二个选择是在收到请求时在客户端上对其进行过滤,尽管这样做速度较慢且风险较大。

如果我误解你的问题,请道歉。

答案 1 :(得分:0)

我的英语不太好。所以请尝试理解。我在asp.net中遇到了同样的问题。 如果您有服务器页面(aspx.cs),则从源(.aspx)中删除整个html内容,仅应在后面的代码中编写服务器端代码。 我尝试通过屏幕截图向您展示我的代码。 我的javascript和html代码是在静态页面和服务器端的html页面中编写的 “ .aspx.cs”页面中编写的代码,没有“ .aspx”页面中编写的html内容,只有前1行是源代码。 this is .aspx file means source codethis is server page以及最后一个this is static page that is html page