Nano Hash - криптовалюты, майнинг, программирование

Laravel - обернуть ответ JSON в текстовую область

Я использую плагин форм jQuery для отправки форм через AJAX.

При загрузке файлов в старых браузерах, которые не поддерживают загрузку файлов через AJAX (вместо этого они используют скрытый iframe) и возвращении ответа JSON, это рекомендуется заключать ответ в текстовое поле.

Теперь на стороне моего сервера Laravel я хочу вернуть ответ JSON, заключенный в текстовую область, если запрос не AJAX. Обычно, чтобы вернуть ответ JSON, я бы использовал return Response::json($value);, но это не позволяет мне обернуть свой ответ текстовым полем.

Подсветка\Поддержка\Фасады\Ответ

public static function json($data = array(), $status = 200, array $headers = array(), $options = 0)
{
    if ($data instanceof ArrayableInterface)
    {
        $data = $data->toArray();
    }

    return new JsonResponse($data, $status, $headers, $options);
}

Есть ли в Laravel чистый способ вернуть ответ JSON, завернутый в текстовую область? Я знаю, что могу просто вернуть строку json_encode()ed, завернутую в текстовую область, но я просто ищу потенциально более чистый подход в стиле Laravel.

Ваше здоровье


Ответы:


1

Я предлагаю вам создать для этого макрос ответа.

Response::macro('myjson', function($data = array(), $status = 200, array $headers = array(), $options = 0){
    $response = Response::json($data, $status, $headers, $options);
    if(!Request::ajax()){
        return Response::make('<textarea>'.$response->getContent().'</textarea>', $status, $headers);
    }
    return $response;
}

Использование: (точно так же, как Response::json())

return Respones::myjson($value);
12.02.2015
  • Фантастика! Есть ли что-то, что Laravel не может сделать?! 12.02.2015
  • Хитрость в том, что Laravel ничего не может сделать, но пытается быть максимально расширяемым, поэтому добавить функциональность просто :) 12.02.2015
  • @lukasgeiter Вы помещаете этот код в свой метод контроллера? 12.02.2015
  • @silkfire Нет, вы делаете это либо в app/start/global.php (или в файле, который вы туда включаете), либо в поставщике услуг. (В Laravel 5 поставщик услуг определенно предпочтительнее). Пожалуйста, также проверьте документы, поскольку они также охватывают эту тему. 12.02.2015
  • @lukasgeiter Хм, я всегда думал, что поставщики услуг похожи на классы. В этом случае все, что нужно пользователю, это крошечный метод? Есть ли способ сделать метод статическим? запутался 12.02.2015
  • Поставщики услуг являются классами. Классы для загрузки и регистрации вещей. Взгляните на пример в документации L5, который может прояснить ситуацию. :) 12.02.2015
  • @lukasgeiter Спасибо, я все еще изучаю поставщиков услуг, но еще не нашел им хорошего применения. Я обновил все свои проекты до L5, и мне это до сих пор нравится :) 12.02.2015
  • @silkfire Пожалуйста. Также не забудьте прочитать эту главу в документации о поставщиках услуг, если вы еще этого не сделали. 12.02.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..