【问题标题】:Ajax PUT call resulting in illegal invocation errorAjax PUT 调用导致非法调用错误
【发布时间】:2015-02-28 19:25:12
【问题描述】:

我正在尝试将我从早期的 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文件没有改变,只是局部变量一个。我做错了什么?

【问题讨论】:

    标签: javascript jquery ajax xml put


    【解决方案1】:

    您在进行 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();
            }
    });
    

    【讨论】:

    • 您好,感谢您的回复。好吧,您在发出 ajax 请求之前重新加载页面是对的,这让我(错误地)相信 ajax 请求是成功的。但是,在进行您建议的更改后,我意识到通话不成功。成功函数永远不会执行,我仍然收到“未捕获的类型错误:非法调用”。
    • 所以这无疑使我朝着正确的方向迈出了一步。我快到了!不幸的是,现在我收到一个错误:PUT"excluded-link-to-my-webpage" 405 (Method Not Allowed)jquery.min.js:4 n.ajaxTransport.k.cors.a.crossDomain.sendjquery.min .js:4 n.extend.ajaxjs.js:158(匿名函数)jquery.min.js:3 n.event.dispatchjquery.min.js:3 n.event.add.r.handle 我检查了网址它绝对没问题。我正在使用我拥有的实时网站来测试它。研究了这个错误,我读到遇到它的人必须启用 cors,不管那是什么。我想我需要这样做
    • 该错误意味着您无法发出PUT 请求,请确保您将服务器配置为接受它们。
    猜你喜欢
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    相关资源
    最近更新 更多