2011-09-01 65 views
0

我有一个输入类型为“file”的表单。它提交使用ajax(插件jquery form)。 服务器返回json响应。有在JSON数据的HTML标签:用jQuery表单插件进行文件上传

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

但是当插件获取此响应它

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

转移是不correnct JSON。我该如何解决它?如果表单中没有输入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)); 

回答

1

帮助

json_encode($a, JSON_HEX_TAG) 
1

无法通过AJAX提交文件,HTML 5拥有更好的文件上传功能。但在旧版浏览器中不可能。不确定这究竟是什么打破了你的JSON,但你的最终目标是无法实现的。

+0

我错了,它是iframe中。 “ajax表单插件”使用iframe上传文件 – Ildar

+0

是的,这是一个接受的标准黑客做ajax文件上传你把输入类型=文件在iframe中,然后当用户点击上传你使用javascript来提交表单在在你的文件输入 – kmcc049

1

maby你可以试试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); 
}}); 
+0

周围的iframe有相同的响应。如果dataType json然后调用函数失败,因为它是不正确的json – Ildar

相关问题