양식 값을 XML로 변환하려고합니다. 전체 스크립트는 Chrome 등에서 정상적으로 작동하지만 IE8은이를 망칠 필요가있었습니다. IE에서 추가 기능에 오류가 발생했기 때문에 처음에는 코드를 변경해야했습니다. (분명히 XML 요소 대신 HTML 요소가 작성되었으므로 이제는 XML이라고 생각하고 IE는 더 이상 징징 대지 않습니다.) 크롬 실제로 콘솔에 빈 줄을 보여줍니다 (크롬과 IE 모두가 정의되지 않은 반환, 문자열로 XML을 변환합니다.JS를 사용하여 XML을 만들고 문자열로 변환
을 내가 잘못 뭐하는 거지?
function xmlToString(xmlData) {
var xmlString;
//IE
if (window.ActiveXObject){
xmlString = xmlData.xml;
}
// code for Mozilla, Firefox, Opera, etc.
else{
xmlString = (new XMLSerializer()).serializeToString(xmlData);
}
return xmlString;
}
function saveValues(thisB,formName){
var xpath = $(thisB).attr("xpath");
var returnToServer = $(thisB).attr("returnToServer");
var version = $(thisB).attr("version");
var now= Math.round(new Date().getTime()/1000)
var $root = $($.parseXML("<XMLDocument />").getElementsByTagName('*')[0]);
var $valuesEl = $($.parseXML('<saveValues xpath="'+xpath+'" returnToServer="'+returnToServer+'" version="'+version+'"></saveValues>').getElementsByTagName('*')[0]);
$("input").each(function(){
var name = $(this).attr("name");
if(name != 'xmlToPost'+formName && name != 'saveValuesButton'){
if($(this).attr("type") == 'text' || (($(this).attr("type") == 'checkbox' || $(this).attr("type") == 'radio') && $(this).is(":checked"))){
$valueEl = $($.parseXML('<value datetime="'+now+'" version="'+version+'" name="'+name+'"></value>').getElementsByTagName('*')[0]);
$valuesEl.append($valueEl);
}
}
});
$root.append($valuesEl);
var valuesXML = xmlToString($root);
var postToXMLContent = $("#xmlToPost"+formName).val();
valuesXML = valuesXML.replace(/savevalues/gi,"saveValues");
valuesXML = valuesXML.replace("returntoserver","returnToServer");
//..rest of code
}
을 나는 $ 루트 개체를 로그인 할 때, 크롬 나에게 [<xmldocument>, context: <xmldocument>]
으로 시작되는 큰 객체를 제공하며, saveValues 등을 포함하는 childnodes를 찾기 위해 확장 할 수 있습니다. IE는 단지 [object Object]
을 보여줍니다.
'thisB'란 무엇입니까? 왜 '