[将XML发送到服务器时在JQuery Ajax POST调用中的404

问题描述 投票:0回答:1

我最近正在使用Adobe InDesign扩展程序,因为我想使用jquery ajax POST调用将xml文件上传到服务器,因此,我必须从文件系统中读取XML文件并将其存储到变量中,然后然后将该变量作为正文传递到发布请求中,这是我的代码

function uploadDocument( onSuccess, onError, onComplete) {
  var token = localStorage.getItem("token");
  writeLogs("uploadDocument function \n " + token );

  var result = window.cep.fs.readFile("/Users/mac41589/Downloads/test-xmls/post.xml");
  var xmlStr = "";

  if(result.err == 0){
    writeLogs("file read complete " + ' ' + result.data)
    xmlStr = result.data;
    alert("type of xmlStr new" + ' ' + typeof(xmlStr));

    $.ajax({
      url : "https://xyz.abc.com/capi-demo/article?customerNumber=888",
      method: "POST",
      data: xmlStr,
      beforeSend : function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer " + token);
        xhr.setRequestHeader("Content-Type", "application/xml");
      },
      complete: function(xhr) {
          alert("on complete with code" + ' ' + xhr.status + ' ' + xhr.statusText );
          //onComplete();
      },
      success : function(response) { 
          alert("file upload success with response : " + ' ' +response);
      },
      error : function(jqXHR, textStatus, errorThrown) {
          alert('file upload fail with error -- ' + jqXHR.status + ' textStatus: ' + textStatus + ' errorThrown: ' + errorThrown);
      }
    });
  }
}

这里确切是我要发送的XML文件:

<document xmlns="http://pubpress.com/document">
   <properties>
       <magazineNumber>95100</magazineNumber>
   </properties>
   <article>
       <pam:message xmlns:pam="http://xax.org/namespaces/pam/2.0/" xmlns:ppc="http://axa.com/content" xml:base="/article/content/39992.xml">
   <pam:article>
       <head xmlns="http://www.w3.org/1999/xhtml">
           <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/">888-create.xml</dc:identifier>
           <pam:status/>

       </head>
       <body xmlns="http://www.w3.org/1999/xhtml"><p>Sample body text</p></body>
   </pam:article>
</pam:message>
   </article>
</document>

因此,每当我执行此POST调用时,它都会返回404错误Not Found,但是当我发送错误的(不希望发送到服务器的)XML文件时,它将显示400错误的请求。错误的xml(服务器不需要)如下:

<?xml version="1.0" encoding="UTF-8"?>
<variable type="NameValuePair[]">
   <item type="NameValuePair">
      <name type="String"><![CDATA[No Data Found]]></name>
      <value type="String"><![CDATA[95990070]]></value>
   </item>
</variable>

我无法找到为什么此POST调用从ajax调用返回404的原因,其中具有相同参数的相同调用在PostMan中运行良好。先感谢您..在此方面的任何帮助将不胜感激。

javascript jquery ajax xml adobe-indesign
1个回答
0
投票

除了确保URL接受发布的xml外,还应将contentType: "text/xml",的ajax选项添加到您的配置中。

© www.soinside.com 2019 - 2024. All rights reserved.