我有一个用于管理研讨会的joomla组件。
在编辑视图中,除其他字段外,我还有3个选择列表:
我正在尝试根据主题列表选项中选择的内容填充级别列表选项。
所以在主题列表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页面代码。如何才能检索级别列表的选项?
非常感谢!
答案 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 code和this is server page以及最后一个this is static page that is html page