很抱歉,如果这个答案与本网站中的其他问题相似,
但我找不到我需要的东西。

我有以下代码:

    $.ajax({
            url: '../../cgi-bin/executeQuery',
            type: 'GET',
            data: ({siid:5185,of:"xmlWithColID"}),
            dataType: 'xml',
            success: function(xmlR){
                    try{
                            $.ajax({
                                    url: '../../cgi-bin/authList.py',
                                    type: 'GET',
                                    data: ({xmlToFormat:xmlR,service:"paperList"}),
                                    dataType: 'xml',
                                    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原型(prototype)对象的非法操作”。

当我删除代码的“成功”部分时,错误消息仍然存在。
之后,我删除了“complete”部分,错误消息也在那里。
但是,当我删除代码的以下行时:
数据:({xmlToFormat:xmlR,service:“paperList”}),
消息不见了。

但是我不明白原因。是否可以在ajax事件中将“xml”作为数据发送到CGI?

谢谢

最佳答案

该错误消息通常是指当您尝试包装 native 函数(例如“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之类的旧版本,则可以确认这种区别。

否则,我看不到任何与您提供的代码有关的东西,并且使用ajax发送xml数据完全有效。

09-27 02:02