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

时间:2015-02-28 19:25:13

标签: javascript jquery ajax xml put

我正在尝试将从早期ajax调用存储的现有xml文档修改为名为“XML”的全局变量。

现在,我试图将xml文档中的标题更改为用户想要将其更改为的内容。出于某种原因,在我的ajax put调用之后,我不断收到“未被捕获的类型错误:非法调用”,但是我的成功函数执行了。我的代码如下:

$("#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文件实际上正在被修改,但是在重新加载窗口时,我发现更改应该放入的xml文件没有变化,只是局部变量1。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您在进行ajax调用之前重新加载页面,您必须将一个函数传递给success参数,而不是调用一个。
在发出ajax请求之前调用window.location.reload(),将其包装在作为成功回调的函数添加集中。
此外,看起来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();
        }
});