我正在尝试将从早期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。我做错了什么?
答案 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();
}
});