我正在使用实时修补程序而且我被卡住了。
应用程序体系结构的快速说明:脚本向dispatcher.php发送XML请求。在调度程序的顶部,内容类型设置为text / xml。然后根据请求中的属性设置命令:
<request type="buworkflows"><unit>10</unit></request>
因此,对于buworkflows命令,将调用db并返回包含数据的数据集。
应该使用此返回的数据动态生成下拉列表。但是,我在IE中得到了“需要对象”。以下代码在我的开发服务器上的IE和FF中运行良好,但是在实时失败。我无法在现场调试FF;应用程序是为IE量身定制的,任何mod都意味着我会影响实时系统。所以,我现在必须与IE合作。我已经提醒出单元ID和XML请求;一切都很好。对于一种类型的数据集,此特定请求仅失败;其余的工作正常。
我希望这是足够的评论和反馈信息。
真的需要你的帮助。
***最后更新:昨天我解决了这个问题。请参阅我对詹姆斯的评论中的解释。谢谢你的时间和帮助。解决。
更新:WS_DISPATCHER解析为/ws/dispatcher.php。我已经通过调试确认它正确地传递给了AJAX。
更新:对于完成的问题,getRequestObject()
function getRequestObject() {
resetMsgBar();
var req = null;
if(XMLHttpRequest) {
req = new XMLHttpRequest();
if(req.overrideMimeType)
req.overrideMimeType("text/xml");
}
else if(window.ActiveXObject) {
try {
req = new ActiveXObject("msxml2.xmlhttp");
} catch(e) {
try {
req = new ActiveXObject("microsoft.xmlhttp");
} catch(e) {}
}
}
if(!req)
return null;
else
return req;
}
AJAX代码:
var req = getRequestObject();
var reqXml = new String();
reqXml+= "<request type='buworkflows'>";
reqXml+= "<unit>" + id + "</unit>";
reqXml+= "</request>";
req.open("POST", "<?=WS_DISPATCHER_ADDR?>", true);
req.onreadystatechange = function() {
if(req.readyState==4) {
if(req.status==200) {
//var wfData = new ActiveXObject("microsoft.xmldom");
//wfData.async = false;
//wfData.load(req.responseXml);
var opt = null;
document.getElementById("type").options.length=0;
opt = document.createElement("option");
opt.text ="Please select the assignment type";
opt.value="-1";
document.getElementById("type").options.add(opt);
//if(wfData.documentElement) {
for(var i=0; i < req.responseXML.documentElement.childNodes.length; i++) {
opt = document.createElement("option");
var elem = req.responseXML.documentElement.childNodes[i];
opt.value = elem.childNodes[0].childNodes[0].nodeValue;
opt.text = elem.childNodes[2].childNodes[0].nodeValue;
if (undefined != elem.childNodes[3].childNodes[0]){
opt.title = elem.childNodes[3].childNodes[0].nodeValue;
}
document.getElementById("type").options.add(opt);
//}
//opt.text = req.responseXML.documentElement.childNodes[i].firstChild.selectSingleNode("name").text;
//opt.value=req.responseXML.documentElement.childNodes[i].selectSingleNode("id").text;
//opt.title=req.responseXML.documentElement.childNodes[i].selectSingleNode("description").text;
//document.getElementById("type").options.add(opt);
}
//}
loadAdditionalFields(0);
hideProgressBar();
}
}
}
req.send(reqXml);
答案 0 :(得分:0)
通过添加:
进行调试if(req.status==200) {
alert(req.responseText);
alert(req.responseXML);
并查找php错误
答案 1 :(得分:0)
我在通过代码进行更多调试并检查数据库中的数据之后,昨天解决了这个问题。有一个非ASCII字符使XML数据集无效。原始程序员没有将节点值括在CDATA块中。