Ildar
Ildar

Reputation: 796

File upload with jquery form plugin

i have a form with input type="file". it submits using ajax (plugin jquery form). Server returns json response. There are html tags in json data:

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

but when plugin gets this response it transferred in

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

it is not correnct json. How can i fix it? If there is no input type="file" element in form, all works fine.

Here is JS

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

Here is PHP

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

Upvotes: 0

Views: 538

Answers (3)

Ildar
Ildar

Reputation: 796

Helps

json_encode($a, JSON_HEX_TAG)

Upvotes: 1

Ryker.Wang
Ryker.Wang

Reputation: 797

maby you can try json dataType.

Try

$('#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);
}});

Upvotes: 1

kmcc049
kmcc049

Reputation: 2801

You cannot submit a file via ajax, Html 5 has much better file upload capabilities. But in older browsers its not possible. Not sure if thats exactly what is breaking your json, but your end goal is unachievable.

Upvotes: 1

Related Questions