簡體   English   中英

通過ajax返回存儲過程輸出

[英]Returning stored procedure output through ajax

我目前有一個工作流程,其中在我的刀片中進行了 ajax 調用,該調用通過控制器進行調用,並且該函數使用 PDO 調用存儲過程。 此調用成功,我的存儲過程正確執行/插入並設置為返回我的輸出。 我現在唯一的問題是:

如何從存儲過程中獲取輸出並將其傳遞回我的刀片以作為隱藏輸入? 沒有頁面刷新,因此當 AJAX 調用成功時,我想將來自服務文件的輸出放入刀片中的隱藏輸入中。 我怎樣才能正確地做到這一點?

刀刃:

$.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();

}

在您的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);
}

在你的Blade 模板中

$.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
   }
});

例如,您只需要使用jQuery插入data.campaign_id的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM