Ajax PUT 调用导致非法调用错误

Ajax PUT call resulting in illegal invocation error

我正在尝试修改一个现有的 xml 文档,我从之前的 ajax 调用中存储到一个名为 "XML".

的全局变量中

现在,我正在尝试将 xml 文档中的标题更改为用户想要更改的标题。出于某种原因,我在 ajax put 调用后不断收到 "uncaught type error: Illegal invocation",但是我的成功函数执行了。我的代码如下:

$("#saveButton").click(function(event) {

    var url = links[$("#nameInput").val()]; //the url of the xml file to be modified

    changeXML(XML); //XML is global variable where i stored the xml file from 'GET' call earlier

    $.ajax({
            url: url,
            data: XML,
            type: 'PUT',
            dataType: 'xml',
            success: window.location.reload()
        });
});
function changeXML(xml){

    var title = $("#titleInput").val();//obtains user input for title change

    $(xml).find('title').first().text(title);//changes title to what user entered


    }

我保存的全局变量xml文件实际上正在修改,但是在重新加载window时,我发现应该放​​置更改的xml文件into 没有变化,只是局部变量之一。我做错了什么?

您在 ajax 调用之前重新加载页面,您必须将一个函数传递给成功参数,而不是调用一个函数。
window.location.reload() 在 ajax 请求发出之前被调用,将其包装在一个函数添加集中作为成功回调。
另外它看起来像 XML 是一个 jQuery 对象,你必须将它转换成一个 xml 字符串。

var oSerializer = new XMLSerializer();
var data = oSerializer.serializeToString(XML);
$.ajax({
        ...
        contentType: 'text/xml', //set the content type not the data type
        data: data,
        success: function(){
            window.location.reload();
        }
});