如果这个答案与本网站的其他问题相似,我很抱歉
但我找不到我需要的东西.
但我找不到我需要的东西.
我有这个代码:
$.ajax({ url: '../../cgi-bin/executeQuery',type: 'GET',data: ({siid:5185,of:"xmlWithColID"}),dataType: 'xml',success: function(xmlR){ try{ $.ajax({ url: '../../cgi-bin/authList.py',data: ({xmlToFormat:xmlR,service:"paperList"}),success: function(data){ try{ displayResult(data,loadXMLDoc("js/authList/paperTableStyle.xsl"),"divPaperTable"); }catch(e){ console.log(e.message); } },complete: function(XMLHttpRequest,textStatus){ $('#divMakingAuthorList').addClass('secondary'); $('#divMakingAuthorList').hide(); } }); }catch(e){ console.log(e.message); } } });
这给了我FF中的以下错误:“对WrappedNative原型对象的非法操作”.
当我删除代码的“成功”部分时,错误消息仍然存在.
之后,我删除了“完整”的parte,错误信息也在那里.
但是,当我删除以下代码行时:
data:({xmlToFormat:xmlR,service:“paperList”}),
消息消失了.
但我不明白原因.是否可以将“xml”作为ajax事件中的数据发送到我的CGI?
谢谢
解决方法
该错误消息通常是指当您尝试包装本机函数时,例如“eval”
如果你做这样的事情 –
(function() { var t = eval; eval = function() { t.apply(window,arguments); } }();
Firefox不再允许你使用eval,因为函数签名不再匹配它的内部参考点,它认为这是一种狡猾的策略.我认为这完全是愚蠢的,违反了javascript灵活性的前提,但这是我们现在要处理的问题.
类似于var x = document.createElement;调用x(‘div’)会让firefox像emo青少年一样抱怨.
我的猜测是,当xmlR未传递给第二个ajax请求时,请求失败,因此永远不会调用您的成功块.我知道你提到你在没有成功阻止的情况下尝试了呼叫但你仍然看到了消息,但也许你可以再次尝试使用空的成功函数进行确认.
我将查看displayResult和loadXMLDoc中发生了什么 – 我相信非法操作安全检查最近被添加到FireFox中,所以如果您可以尝试像3.0这样的旧版本,您可能会确认这一区别.