Javascript 如何使用Ajax+Jquery更新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

我想使用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: "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格式不正确