2017-11-01 1 views
0

Ich versuche einzelne Zitate aus einer unverarbeiteten Textvariablen zu entfernen und über AJAX zu posten.Entfernen Sie einzelne Anführungszeichen vom Anfang und Ende der Zeichenfolge

Ich bekomme diesen Fehler bei der Rückkehr vom API-Endpunkt:.

Dieser Fehler wird verursacht, wenn Ihren XML-POST-Daten normalerweise ein "" oder '' vorangestellt ist, wie es bei mir der Fall ist. Alles, was Sie tun müssen, ist die erste und letzte "" oder '' mit einigen einfachen Regex und .trim oder .replace zu entfernen.

Aus irgendeinem Grund wird es nicht für mich entfernt. Ich habe unzählige Regex-Beispiele online versucht, die angeblich das erste und letzte Zeichen trimmen, nur das erste und letzte Zeichen, wenn sie "" oder '' sind, ohne Erfolg.

Code:

$('#idealMatBtn').click(function (e) { 
    var xmlSTR = '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd"><cXML timestamp="2015-06-12T08:30:00" xml:lang="en-US"> <Header> <From> <Credential domain="NetworkID"> <Identity>EU019985</Identity> </Credential> </From> <To> <Credential domain="DUNS"> <Identity>Ideal Supply Test</Identity> </Credential> </To> <Sender> <Credential domain="NetworkID"> <Identity>Ideal Supply Test</Identity> <SharedSecret>Ideal</SharedSecret> </Credential> <UserAgent>eProcurement-System 1.0</UserAgent> </Sender> </Header> <Request> <PunchOutSetupRequest operation="create"> <BuyerCookie>[Unique-Generated-Identifier-from-eProcurement-System]</BuyerCookie> <Extrinsic name="FirstName">John</Extrinsic> <Extrinsic name="LastName">Smith</Extrinsic> <Contact role="endUser"> <Name xml:lang="en-US">john</Name> <Email>[email protected]</Email> </Contact> <BrowserFormPost> <URL>https://test-sys.greenwingtech-system.com/punchout/return</URL> </BrowserFormPost> </PunchOutSetupRequest> </Request></cXML>'; 
    xmlSTR = xmlSTR.toString().replace(/(^"|"$)/g, ''); 
    $.ajax({ 
     type : "POST", 
     dataType : "xml", 
     url : "https://postDataToThisURL.do", 
     data : "xmlSTR", 
     contentType : "text/xml", 
     cache : false, 
     processData : false, 
     success: function (data) { 
      if (data) { 
      url = $(data).find("URL").text(); 
      console.log(data) 
      console.log(url) 
      window.open(url, "popupWindow", "width=1000,height=600,scrollbars=yes");    
      } 
     else { 
      // do something 
     } 
     } 
    }); 
    e.preventDefault(); 
}); 
+3

Im angegebenen Code beginnt Ihre 'xmlSTR' XML-Zeichenkette * nicht * mit einem Anführungszeichen, sie beginnt mit einem' <'und endet mit einem'> '. Sie können etwas, das nicht dort ist, nicht entfernen. – nnnnnn

+0

@nnnnnn Es beginnt mit einem einzigen Zitat? Ist das das Problem? Wenn ich es in reguläres double quote '' 'ändere, bekomme ich' Uncaught SyntaxError: Unexpected number' Fehler. – xGlorify

+2

Dieses einfache Anführungszeichen ist kein Teil der Zeichenkette, es ist Teil der JS String Literal Syntax alle Zeichen zwischen den äußeren Hochkommata schließen diese Anführungszeichen nicht selbst mit ein. So setzt zB 'var x = 'abc' 'x' auf eine Zeichenkette mit drei Zeichen, 'abc'. – nnnnnn

Antwort

1

Entfernen Sie die Zitate aus dieser Zeile:

data : "xmlSTR", 

... zu machen:

data : xmlSTR, 

Die Art und Weise Sie es hatte, waren Sie der Einstellung Der data Wert für die Literalzeichenfolge , dh die Zeichen x, m, l, S, T, R. Sie möchten s und es zu der VariablenxmlSTR.

+0

Das war es.Ich weiß nicht, wie ich das nach all der Zeit vermisst hätte.Strings sind Strings, egal welche Sprache ich benutze. Danke! – xGlorify

Verwandte Themen