我在所有好的浏览器IE10和9中都有这个功能,但是在IE8中没有解析/显示的xml数据。
$("#Form").validate({
submitHandler: function(form) {
$('#prcs3').show();
var dataString = $(form).serialize();
$.ajax({
type: $(form).attr('method'),
url: form.action,
data: dataString,
clearForm: true,
success: function(data) {
$('#resultGenerate > li').remove();
var answer = $(data).find("td:eq(3)").text();
var message = $(data).find("td:eq(5)").html();
var $xml = $( message );
if (answer==="True") {
$('#prcs3').hide();
$xml.find('license').each(function(){
var CustomerID = $(this).find('CustomerID').text();
var License = $(this).find('License').text();
var Log = $(this).find('Log').text();
var ExpirationDate = $(this).find('ExpirationDate').text();
$("#resultGenerate").show().removeClass('error').append($('<li><span class="ID">' + CustomerID + '</span><span class="L">' + License + '</span><span class="Log">' + Log + '</span><span class="Exp">' + ExpirationDate + '</span></li>'));
});
} else {
$('#prcs3').hide();
$('#resultGenerate').show().html('<a class="close">X</a><ul><li>' + message + '</li></ul>');
}
}
});
return false;
}
});
什么可能导致IE8不显示我返回/解析的xml?我感谢任何建议,一如既往地谢谢你。
答案 0 :(得分:3)
如果没有看到返回的响应的示例,我收集的是xml是要返回的html表中的文本。
您可能需要使用$.parseXML()
尝试:
var $xml = $( $.parseXML( message) );
API参考:http://api.jquery.com/jQuery.parseXML/
编辑:此外,低于9的IE版本会将标记翻译为全部大写。您可以通过检查length
if( $xml.find('LICENCES').length ){
/* use all uppercase tagnames*/
}else{
/* use all lowercase tagnames*/
}
答案 1 :(得分:0)
我认为问题出在var $xml = $( message );
,因为我通过JSlint运行它,这是唯一的非jQuery相关错误。 var $xml = $(message);
会修复它吗?
编辑:尝试删除$
之前的$(form).serialize();
,因为jQuery网站(http://docs.jquery.com/Plugins/Validation)有一个示例,表明可能会出现问题。
答案 2 :(得分:0)
我使用IE10并遇到了同样的问题。链接here向我描述了这个问题。所以,简而言之,首先我检查了浏览器是否是IE(因为xml被其他浏览器成功解析)然后转换了我的响应字符串。希望以下代码片段有所帮助:
function getXMLData(str)
{
var MSIE = jQuery.support.leadingWhitespace;//detects if browser is IE
if(MSIE)if browser is IE
{
if ( ! $.isXMLDoc(str))//if str is not in XML, make it xml
str = $.parseXML(str)
var xmlDoc=str;
}
else//for other browsers, take the response string as it is
{
var html = XMLToString(str);//gives back string from xml string
var xml = html;
var xmlDoc = $.parseXML( xml );
}
var $xml =$( xmlDoc ),
$title = $xml.find( "string" );//find the 'string' element from xml
//do the rest of the processing
}
答案 3 :(得分:0)
我在这里猜测:
success: function(data) {
$('#resultGenerate > li').remove();
var answer = $(data).find("td:eq(3)").text();
var message = $(data).find("td:eq(5)").html();
var $xml = $( message );
我认为你必须首先获得parseXML
数据。所以,
success: function(data) {
$('#resultGenerate > li').remove();
var $data = $( $.parseXML(data) );
var answer = $data.find("td:eq(3)").text();
var message = $data.find("td:eq(5)").html();
var $xml = $( message );