2

更新 2

在仔细阅读了关于 ajax 和数据属性的文档之后,这里“对象必须是键/值对”,因此我不能只传递任何对象,而是必须将其包装在某种关联数组或 JSON 中,它可以像 {theResp:leXmlDoc} 这样的东西,因此contentType:"XML"确实做任何事情我是正确的吗?

您好我想通过 AJAX 将数据发送到我的 ASMX 网络服务。我的意思是想用 contentType 发送数据:“application/xml”、“text/xml”或“xml”。我似乎找不到正确的方式来格式化我的 XML 以便我的 AJAX 可以工作。如果我将它包装在 JSON 中,那么我可以毫无问题地发送它。所以我想知道是否有一种特定的方式可以形成我的 XML?这是 m AJAX:我尝试将 leXmlDoc 作为 XMl 源字符串和作为 Dom Document 对象传递的一些注释。

function sendToServer(leXmlDoc) {
  console.log($.isXmlDoc(leXmlDoc)); //Here I check if leXmlDoc is an XML Document, I   
  also tries using jsut the XML source string
  $.ajax({
    type: 'POST',       
    processData: false, //I also tried setting it to true
    contentType: "xml", //I also tried application/xml, and text/xml
    dataType: "xml",
    url: "/Webservices/TransferXmlData.asmx/SendingXmlToServer",              
    data: leXmlDoc, 
    success: function (data) {
        console.log(data);
    },
    error: function () {
        console.log("there is a problem sending the XML");
    }
  });
};

我的网络服务,我知道这是可行的,因为当我发送 JSON 时,它会返回我发送的数据。除非接受 XML 需要不同。

  <WebMethod(EnableSession:=True)> _
    Public Function SendingXmlToServer(ByVal theResp As String) As String           
        Return theREsp
    End Function

编辑

作为 XML 源字符串的 console.log(leXmlDoc) 的输出,我检查它是字符串类型

<?xml version="1.0" encoding="UTF-8" ?>
 <Sections> 
<Section>
    <TheGreeting>Hello</TheGreeting>
    <ThePlanet>World</ThePlanet>
    <Puncuation>!</Puncuation>      
</Section>
</Sections> 

这是作为 Dom 文档的输出,我使用 console.log($.isXmlDoc(leXmlDoc)) 检查结果为真,typeOf 是一个对象,我通过这段代码创建了 leXMLDoc,其中 theXmlFile 是 XML 源上面的字符串:

var domParser = new DOMParser();
var XmlDOM = domParser.parseFromString(theXmlFile, "application/xml");
sendToServer(XmlDOM);

作为 dom 文档的 console.log(leXmlDoc) 的输出是这样的

 #document
 <Sections> 
<Section>
    <TheGreeting>Hello</TheGreeting>
    <ThePlanet>World</ThePlanet>
    <Puncuation>!</Puncuation>      
</Section>
</Sections> 

我希望这有帮助。

更新 1

当我决定 console.log 像这样的 xhr

   error: function (xhr, ajaxOptions, thrownError) {
        console.log(xhr);
        console.log(xhr.status);
        console.log(ajaxOptions);
        console.log(thrownError);
    }

并打开对象我收到一条错误消息

responseText: "System.InvalidOperationException: Request format is invalid: xml 
↵   at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
↵   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
↵"

所以看起来格式已经磨损了。然而,当我通过导航直接进入网络服务时

http://localhost:52530/WebServices/TransferXmlData.asmx/

并使用 console.log(leXmlDoc (Source string)) 的输出手动调用 web 服务,然后复制和粘贴它工作正常。

4

1 回答 1

0

我就是这样做的,我设置了一个服务器端客户端来使用 ASMX Web 服务。然后使用 Fiddler 检查它发送到 ASMX 网络服务的 SOAP 数据包。这是我需要通过 $.ajax 调用发送的确切 XML。

于 2014-02-24T10:10:58.827 回答