0

我有一个输入类型=“文件”的表单。它使用 ajax(插件jquery 表单)提交。服务器返回 json 响应。json数据中有html标签:

{"logs":"<span>vfdvf<\/span>","errors":"<span><\/span>"}

但是当插件收到此响应时,它会转入

{"logs":"<span>vfdvf&lt;\/span&gt;","errors":"<span>&lt;\/span&gt;"}</span></span>

它不是正确的 json。我该如何解决?如果表单中没有 input type="file" 元素,则一切正常。

这里是 JS

$('#edit_ext_table_form').ajaxForm({
    dataType: 'html',
    success: function(responseText) {
        console.log(responseText);
    },
    error: function(request) {
        var responseText=request.responseText;
        console.log(responseText);
    }
}

这是PHP

$a = array(
    'logs' => '<span>vfdvf</span>', 
    'errors' => '<span></span>',
);
exit(json_encode($a));
4

3 回答 3

1

也许你可以试试json dataType

尝试

$('#edit_ext_table_form').ajaxForm({
dataType: 'json',
success: function(result) {
    console.log(result.logs);
    console.log(result.errors);
},
failure: function(result) {
    console.log(result.logs);
    console.log(result.errors);
}});
于 2011-09-01T07:48:31.767 回答
1

您不能通过 ajax 提交文件,Html 5 具有更好的文件上传功能。但在旧浏览器中这是不可能的。不确定这是否正是破坏您的 json 的原因,但您的最终目标是无法实现的。

于 2011-09-01T07:42:07.250 回答
1

帮助

json_encode($a, JSON_HEX_TAG)
于 2011-09-03T08:15:27.943 回答