Загрузка файла с помощью плагина jquery form - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть форма с типом ввода = "файл". он отправляет с использованием ajax (плагин jquery form ). Сервер возвращает ответ 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));

Ответы [ 3 ]

1 голос
/ 01 сентября 2011

Мейби, вы можете попробовать 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);
}});
1 голос
/ 03 сентября 2011

Помогает

json_encode($a, JSON_HEX_TAG)
1 голос
/ 01 сентября 2011

Вы не можете отправить файл через ajax, HTML 5 имеет гораздо лучшие возможности загрузки файлов.Но в старых браузерах это невозможно.Не уверен, что это именно то, что нарушает ваш JSON, но ваша конечная цель недостижима.

...