繁体   English   中英

IE9的AJAX响应包含无效字符

[英]AJAX response from IE9 contains invalid characters

我在IE9中收到了截然不同的JSON响应,并且不确定情况是否会崩溃:

我的JS(这是使用jquery形式- http://malsup.com/jquery/form/ ):

var self = this,
                options = {
                    beforeSubmit: this.beforeSubmit,
                    uploadProgress: this.uploadProgress,
                    success: this.uploadSuccess,
                    resetForm: true
                },
                form = $(this.forms.addNewDocument);

        $(form).ajaxSubmit(options);

我正在从uploadSuccess记录响应。

在我的PHP中,在使用json_encode之前,我得到的响应是:

array(2) {
 ["values"]=>
 array(1) {
   ["categoryId"]=>
   string(1) "1"
 }
 ["template"]=>
 array(1) {
   ["body"]=>
   string(211) "<li id="18"><span class="doc-title">test4.txt</span>&nbsp;<span class="doc-    date">9/30/2014</span>&nbsp;<span class="doc-user">Ling Chow</span><i class="fa fa-download"></i><i class="fa fa-times-circle"></i></li>"
 }
}

然后,当我将数组包装在json_encode($myresult)并记录ajax响应时,我得到以下信息:

In IE 9
 {"values":{"categoryId":"1"},"template":{"body":"<li id='\"6\"'><span class='\"doc-    title\"'>test.txt&lt;\/span&gt;&nbsp;<span class='\"doc-date\"'>9\/30\/2014&lt;\/span&gt;&nbsp;<span class='\"doc-user\"'>Ling Chow&lt;\/span&gt;<i class='\"fa' fa-download\?="">&lt;\/i&gt;<i class='\"fa' fa-times-circle\?="">&lt;\/i&gt;&lt;\/li&gt;"}}</i></i></span></span></span></li>

In IE10/Chrome
{"values":{"categoryId":"1"},"template":{"body":"<li id=\"9\"><span class=\"doc-title\">accredmaster2.html<\/span>&nbsp;<span class=\"doc-date\">9\/30\/2014<\/span>&nbsp;<span class=\"doc-user\">Ling Chow<\/span><i class=\"fa fa-download\"><\/i><i class=\"fa fa-times-circle\"><\/i><\/li>"}} 

IE9在其中添加了很多单引号,其中包含“?=“,看起来好像早就结束了JSON。 为什么会发生这种情况,为什么特定于IE9?

使用header('content-type: application/json'); 在php中的json_encode之前。 这将使IE9意识到您正在返回json,并且不会尝试转义所有内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM