Javascript 如何使用Ajax+Jquery更新XML文件?
我想使用Ajax和jquery更新XML文件。我是ajax新手,所以尝试使用POST/PUT 对于PUT:我得到了错误405。i、 未找到e方法 对于POST:请求错误 VVMURL:是xml文件的路径Javascript 如何使用Ajax+Jquery更新XML文件?,javascript,jquery,ajax,xml,xmlhttprequest,Javascript,Jquery,Ajax,Xml,Xmlhttprequest,我想使用Ajax和jquery更新XML文件。我是ajax新手,所以尝试使用POST/PUT 对于PUT:我得到了错误405。i、 未找到e方法 对于POST:请求错误 VVMURL:是xml文件的路径 var XMLData= "<origin>ABCbfk</origin>"; jQuery.ajax({ type: "PUT", url: vvmsUrl, contentType: "applicatio
var XMLData= "<origin>ABCbfk</origin>";
jQuery.ajax({
type: "PUT",
url: vvmsUrl,
contentType: "application/xml",
headers: { 'Prefer' : 'persistent-auth',
'Access-Control-Allow-Methods': 'PUT'},
dataType: "xml",
processData: false,
crossDomain: true,
data: XMLData,
success:function(msg)
{
alert("hello"+msg);
},
error: function(msg){
alert("Error"+msg);
LOG(xhr.status);
}
});
我们的get工作正常,但不是PUT/POST
输入代码:
VVMURL:是xml文件的路径
var XMLData= "<origin>ABCbfk</origin>";
jQuery.ajax({
type: "PUT",
url: vvmsUrl,
contentType: "application/xml",
headers: { 'Prefer' : 'persistent-auth',
'Access-Control-Allow-Methods': 'PUT'},
dataType: "xml",
processData: false,
crossDomain: true,
data: XMLData,
success:function(msg)
{
alert("hello"+msg);
},
error: function(msg){
alert("Error"+msg);
LOG(xhr.status);
}
});
我被困了两天。我不知道这里面出了什么问题 您可以尝试:上传任何文件 HTML代码
<input type="file" id="uploadfile" name="uploadfile" />
<input type="button" value="upload" onclick="upload()" />
Javascript代码
<script>
var client = new XMLHttpRequest();
function upload()
{
var file = document.getElementById("uploadfile");
/* Create a FormData instance */
var formData = new FormData();
/* Add the file */
formData.append("upload", file.files[0]);
client.open("post", "/upload", true);
client.setRequestHeader("Content-Type", "multipart/form-data");
client.send(formData); /* Send to server */
}
/* Check the response status */
client.onreadystatechange = function()
{
if (client.readyState == 4 && client.status == 200)
{
alert(client.statusText);
}
}
</script>
您需要一个服务器端脚本来处理对服务器上任何内容的修改—您不能只使用客户端jQuery。脚本还将检查谁有权写入该文件,或者任何人都可以修改/更新您的XML文件,这是一个安全问题,可能是您不想要的 请把你所有的代码都写进去好吗?我是说什么是vvmUrl?您正在使用一些web服务吗?您的代码正在调用另一个域,为什么跨域:true 编辑: 这应该在jQuery1.7.2中起作用+
var username = 'myUser';
var password = 'myPassword';
$.ajax
({
type: "PUT",
url: vvmsUrl,
contentType: 'application/xml',
async: false,
crossDomain: true,
username: username,
password: password,
data: xmlData,
success: function (){
alert('Works!');
}
});
我们正在尝试更新XML文件,而不是html文件。因此,您应该将XML文件更改为XML数据。我遇到了一些“方法未找到”错误。所以我添加了crossDomain:true。我的GET代码运行良好。但是我不能做PUT/POST。我们已经使用curl完成了类似的代码,curl可以正常工作。GET可以正常工作,因为它不会对服务器上的文件进行任何更改。您的VVMURL是指向该文件的链接,该文件位于服务器上,对吗?因此,要更新该文件,需要使用服务器端语言。您不能将数据发布到XML文件。curl-X PUT-H Accept:application/XML \-H内容类型:application/XML-u${arguser}:${argpass}-cacert${CERTFILE}-d@${datafile}${url}>${file}2>/dev/null查看修改后的答案。您需要在ajax调用中包含usename和password。我尝试执行上述代码,但弹出一个屏幕询问用户名和密码。但是,即使我输入用户名和密码,它也会让我一次又一次地问同样的问题。问题终于解决了。问题在于数据:XMLDATA。它的XML格式不正确