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

Laravel 4.1.* Метод ответа AJAX

Я пытаюсь настроить простой метод POST с помощью AJAX, отправляю на контроллер Laravel и обрабатываю.

У меня возникла проблема с возвратом ответа, который понимает и может использовать вызов AJAX.

routes.php

Route::controller('supply-us/application', 'ApplicationController');
Route::post('supply-us/application', 'ApplicationController@processSupplierApplication');

Материал AJAX для получения данных формы:

   $('#supplierChainCheckForm').submit(function( event ) {
     event.preventDefault();

     function csrfSafeMethod(method) {
         return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
     }

     // As we're using the "csfrUnsafeMethod" of POST - we'll need to setup the csfr token to be passed between client and server:
     $.ajaxSetup({
         // This is standard before send method for the ajaxSetup() function:
         beforeSend: function(xhr, settings) {
             // If settings.type in $.ajax method is unsafe i.e., if it is 'POST' then we'll need to set X-CSRFToken in the xhr Request Header: omitted && sameOrigin(settings.url) currently;
             if (!csrfSafeMethod(settings.type)) {
                 xhr.setRequestHeader("X-CSRFToken", $('meta[name="csrf-token"]').attr('content'));
             }
         }
     });

     // Get all the form inputs into an array:
     var $inputs = $('#supplierChainCheckForm :input');
     // We can now loop over all of the input names & values of the form:
     var values = {};
     $inputs.each(function() {
         values[this.name] = $(this).val();
     });

     $.ajax({
       type: 'POST', //This will always be a post method for the supplier chain check form.
       url: 'supply-us/application', //URL endpoint for the post form method: we'll set this to the controller function we're targeting.
       data: { 'companyName': values['companyName'] ,'_token': '{{ csrf_token() }}'}
     }).done(function(response) {
       console.log(response.companyName);
     });
   });

ApplicationController.php

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Response;

class ApplicationController extends FrontController {

  public function getSupplierApplication() {
         return self::getPage('supply-us/application');
    }

  public function processSupplierApplication() {

    if (!Input::get('companyName') == null) {
      $company = Input::get('companyName');

      return Response::json([ 'companyName' => $company ], 200);
    } else {
      $company = "No compnay specified";

      return Response::json([ 'companyName' => $company ], 200);

    }
  }
}

Тем не менее, объединение всего вышеперечисленного дает мне

console.log(response.companyName) как "не определено"

Пожалуйста, порекомендуйте. Обратите внимание, я использую Laravel 4.1.*


  • @Tschallacka Просветление - и что мне следует использовать? 31.01.2018
  • Input::get это то, что вы хотите использовать. Это не имеет ничего общего с типом запроса, просто вы получаете поле из ввода. Если вы используете console.log(response), что вы получаете? Если вы получаете строку json, вам нужно декодировать ее в своем javascript, прежде чем вы сможете получить свойства. 31.01.2018
  • Часть вашего поста, удаляемая пользователями, имеющими возможность удалить его, удаляется по какой-то причине. Сообщество может рассматривать его как очень пассивно-агрессивное, а также как вздор. Это не нужно для вопроса, это не нужно на StackOverflow. 31.01.2018
  • @aynber По сути, это возвращает html ... страницы, на которую я пишу. Минусов много. Кажется, это только верхний и нижний колонтитулы? 31.01.2018
  • Интересно, что он дает вам html вместо фактического ответа. Это означает, что он выдает какую-то ошибку. Попробуйте добавить косую черту в начало вашего URL-адреса ajax, чтобы он не изменился, находясь в подкаталоге. Проверьте свои журналы в app/storage/logs, чтобы увидеть, что там что-то выбрасывается, и проверьте заголовки на вкладке сети вашей консоли разработчика, чтобы убедиться, что он не возвращает 404 или 500. 31.01.2018
  • @aynber Нет ошибок консоли, и у меня включена отладка - ошибок тоже не зарегистрировано. Сейчас возвращается ответ {companyName: My Company}, так что мне нужно что-то делать с тем, что я передаю в свои переменные? 31.01.2018
  • @MichaelRoberts прекратите добавлять комментарии к вашему вопросу. Это бесполезно. Этот пост разблокируется через час. Я не ожидаю увидеть его снова отредактированным. 31.01.2018

Ответы:


1

Обновите параметр функции, как показано ниже;

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Input;

class ApplicationController extends FrontController {

  public function getSupplierApplication() {
         return self::getPage('supply-us/application');
    }

  public function processSupplierApplication(Request $request) {

    if (!$request->input('companyName') == null) {
      $company = $request->input('companyName');

      return Response::json([ 'companyName' => $company ], 200);
    } else {
      $company = "No compnay specified";

      return Response::json([ 'companyName' => $company ], 200);

    }
  }
}
31.01.2018
  • Аргумент 1, переданный в ApplicationController::processSupplierApplication(), должен быть экземпляром Illuminate\Http\Request, не задан 31.01.2018
  • Новые материалы

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

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

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

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

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

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

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