Возврат вывода хранимой процедуры через ajax - PullRequest
1 голос
/ 17 апреля 2019

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

Как я могу взять вывод из хранимой процедуры и передать его обратно в блейд для скрытого ввода?Обновление страницы не выполняется, поэтому, когда вызов AJAX успешен, я хочу поместить свой вывод из служебного файла в скрытый ввод в blade-модуле.Как я могу правильно сделать это?

Лезвие:

$.ajax({

   type:'POST',
   url:'campaigns/createCampaign',
   data:{campaignName:campaignName, attribute:attribute},
    _token: '{{ csrf_token() }}',
   success:function(data){
        intro_modal.hide();
   }
});

КОНТРОЛЛЕР:

public function createCampaign(Request $request)
{
    $campaignName = $request->campaignName;
    $attribute = $request->attribute;

    $campaignService = new CampaignService();
    $createCampaign = $campaignService->createCampaign($campaignName, (int) $attribute);

    //return response()->$campaignService;
}

СЕРВИС:

function createCampaign($campaignName, $attribute){

    $stmt = \DB::connection('odbc')->getPdo()->prepare('CALL PROCEDURES.INSERT_CAMPAIGN(?,?,?)');

    $stmt->bindValue(1,$campaignName, PDO::PARAM_STR);
    $stmt->bindValue(2,$attribute, $attribute==0 ? PDO::PARAM_NULL : PDO::PARAM_INT);
    $stmt->bindParam(3,$out2, PDO::PARAM_INT);

    $stmt->execute();

}

1 Ответ

1 голос
/ 17 апреля 2019

В вашем createCampaign

function createCampaign($campaignName, $attribute){

    $stmt = \DB::connection('odbc')->getPdo()->prepare('CALL PROCEDURES.INSERT_CAMPAIGN(?,?,?)');

    $stmt->bindValue(1,$campaignName, PDO::PARAM_STR);
    $stmt->bindValue(2,$attribute, $attribute==0 ? PDO::PARAM_NULL : PDO::PARAM_INT);
    $stmt->bindParam(3,$out2, PDO::PARAM_INT);
    $stmt->execute();

    return $out2;
}

В вашем контроллере

Используйте эти классы:

use Illuminate\Support\Facades\Response;
use Illuminate\Http\Response as HttpResponse;

Вернуть JSON-ответ:

public function createCampaign(Request $request)
{
    $campaignName = $request->campaignName;
    $attribute = $request->attribute;

    $campaignService = new CampaignService();
    $createdCampaignId = $campaignService->createCampaign($campaignName, (int) $attribute);

    return Response::json(["campaign_id" => $createdCampaignId)
            ->setStatusCode(HttpResponse::HTTP_OK);
}

В вашем шаблоне блейда

$.ajax({

   type:'POST',
   url:'campaigns/createCampaign',
   data:{campaignName:campaignName, attribute:attribute},
    _token: '{{ csrf_token() }}',
   success:function(data){
        intro_modal.hide();
       // data.campaign_id will contains the new campain id
   }
});

После того, как вам просто нужно будет ввести значение data.campaign_id с jQuery например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...