jQuery ajax似乎改变了发送到coldfusion服务器的SVG数据

前端之家收集整理的这篇文章主要介绍了jQuery ajax似乎改变了发送到coldfusion服务器的SVG数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用$.ajax()将字符串发送到coldfusion服务器,并将其存储在表中.当我稍后查询并尝试使用该数据时,我收到错误; “null Enclosed Exception:3字节UTF-8序列的字节2无效”.

首先,我从DOM中获取SVG并将其发送到操作页面.它应该只是一个字符串,对吗?

var lclSVG = $('#myDiv')[0].innerHTML; // SVG Code (XML?)
$.ajax({
  url: "myAction.cfm",type: "POST",data: ({myInfo: lclSVG}),});

在myAction.cfm页面上,我将数据更新为表格.

<CFQUERY NAME="postSVG">
  UPDATE myTable
  SET svg = '#form.myInfo#' 
  WHERE  ID = 1
</CFQUERY>

SVG2PNG.cfm:当我尝试查询并使用svg数据时,我收到错误“3字节UTF-8序列的无效字节2”.错误发生在.transcode行上.

<CFQUERY NAME="getSVG">
  SELECT svg
  FROM myTable
  WHERE  ordID = 1
</CFQUERY>
<cfset svg = getSVG.svg>
<cfscript>
  transcoder = createObject("java","org.apache.batik.transcoder.image.PNGTranscoder").init();
  inputStream = createObject("java","java.io.StringBufferInputStream").init(svg);
  input = createObject("java","org.apache.batik.transcoder.TranscoderInput").init(inputStream);
  OutFile = expandPath("myTest2.png");
  outputStream=CreateObject("java","java.io.FileOutputStream").init(OutFile);
  output=CreateObject("java","org.apache.batik.transcoder.TranscoderOutput").init(outputStream);
  transcoder.transcode(input,output);
  outputStream.close();
</cfscript>

我已经多次使用jQuery的ajax方法而没有太大困难.我在这里做错了,我似乎无法掌握它……

解决方法

我没有使用过您使用过的框架,但是设置svg变量的行应该使用getSVG查询吗?
<cfset svg = getSVG.svg>

猜你在找的jQuery相关文章