是否有可能使jQuery Ajax()模拟HTML FORM accept-charset参数?

时间:2012-11-04 06:30:10

标签: jquery ajax forms svg

我使用“accept-charset ='utf-8'”将SVG数据发布到操作页面。在操作页面上,我将该数据插入表中。稍后,在另一个页面中,我从表中查询该数据并通过Batik运行它以将其转码为PNG文件。效果很好。

<form action="test_action.cfm" method="post" target="_blank" accept-charset="utf-8">

如果我从表单标记中删除accept-charset =“utf-8”,那么稍后(在转码页面上)我得到“3字节UTF-8序列的无效字节2”错误(当尝试转码时)。

此外,我尝试使用jQuery的.ajax()尝试在后台处理操作页面时,我得到了同样的错误。使用'accept-charset =“utf-8”'使一切正常。

尝试使用$ .ajax()将SVG发送到后台的操作页面:

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

是否有某种方法可以通过$ .ajax()发布此数据,同时强制.ajax()执行类似'accept-charset =“utf-8”'的操作?

1 个答案:

答案 0 :(得分:0)

根据JQuery ajax() docs,默认值已经是UTF-8。但是,根据这些文档,可能尝试使用contentType选项来设置设置。您可能还需要查看processData选项,因为它特别提到了XML处理。

我同意您的分析,但是您确认在上传过程中发生了损坏,或者您的转码(more details against this question)发生了一些问题:或许某些事情正在运行 >普通文件上传和AJAX上传之间有什么不同?

为了消除这种情况,而不是直接处理转码,可能只是将数据写入SVG并在尝试转码之前对其进行测试(我的意思是作为故障排除步骤)。

通过使用Firebug查看发送文件的服务器的请求,您可能会得到更多有关正在发生的事情的提示:比较这两种方法并寻找差异。

不是一个明确的答案,我担心,但也许有些东西要看。