Jquery和Ajax错误信息无法在Laravel刀片中显示

Jquery和Ajax错误信息无法在Laravel刀片中显示

问题描述:

我在Laravel中使用Ajax和Jquery插入Ledger记录。成功消息已正确显示,但错误自定义消息无法在刀片视图中显示。什么是我的错误请提及。Jquery和Ajax错误信息无法在Laravel刀片中显示

的Jquery:

$("#add").click(function(event) { 
    event.preventDefault(); 

    $.ajax({ 
    type: 'post', 
    url: $("#add").attr('data-url'), 
    data: { 
     '_token': $("input[name=_token]").val(), 
     'form_data': $('#Form').serialize(), 
    }, 
    success: function(data) { 
     $('#ledger_name').val(''); 
     $('#openning_balance').val(''); 
     $('#ob_type').val(''); 
     $('#under').val(''); 
     $('#ledger_address').val(''); 
     $("#newLedger .close").click(); 

     $(".result").html(data.success).css({ 
     'color': 'green', 
     'text-align': 'center' 
     }).delay(5000).fadeOut(); 
    }, 
    error: function(data) { 
     $('#response').show().html(data.error).css({ 
     'color': 'red', 
     'text-align': 'center' 
     }).delay(5000).fadeOut(); 
    } 
    }); 
}); 

控制器:

$values = array(); 
    parse_str($_POST['form_data'], $values); 

    $validation = $this->validator($values,true); 
    if($validation->fails()){ 
    $errors = $validation->errors(); 
    return response()->json(['error' => 'Please Fill all Mandatory Fields',],500); 
    } 

    $insertledgers=Ledger::create(['ledger_name'=>$values['ledger_name'],'openning_balance'=>$values['openning_balance'],'ob_type'=>$values['ob_type'],'under'=>$values['under'],'ledger_address'=>$values['ledger_address'],'company_id'=>$companyids,'user_id'=>$usersid,'created_by'=>$usersid]); 

    $ledgerinsertids=$insertledgers->id; 

    if($values['ob_type'] == 'Cr'){ 

    $creditamts=$values['openning_balance']; 
    $debitamts= 0; 

    } else { 

    $creditamts=0; 
    $debitamts= $values['openning_balance']; 

    } 

    $insertledgeropenningbalance=Openningbalance::create(['ledgerid'=>$ledgerinsertids,'opening_credit'=>$creditamts,'opening_debit'=>$debitamts,'company_id' => $companyids,'user_id' => $usersid,'created_by' => $usersid,]); 

    return response()->json(['success' => 'Ledger Details Added Successfully',],200); 
+0

发表您的看法刀片 – Rahul

+0

Karthik
+0

改进代码格式化 – 31piy

你只需要如下修改您的错误回调函数:

error : function (data) { 
    $('#response').show().html(data.responseJSON.error).css({ 
     'color': 'red', 
     'text-align': 'center' 
    }).delay(5000).fadeOut(); 
} 

感谢@ voodoo417

+0

很抱歉,但你的 “解决方案”是marasm ....你是否看到错误返回500,成功返回200?当然,它不会工作。 – voodoo417

+0

@ voodoo417:我没有注意到第二个参数。谢谢! – linktoahref

试试这个:

<?php 
use Validator; 

class SomeController extends Controller { 

    public function SomeFunction(Request $request) { 
    $values = array(); 
    parse_str($_POST['form_data'], $values); 

    $validation = Validator::make($values, true); 

    if($validation->fails()){ 
     $errors = $validation->errors(); 
     return response()->json(['error' => 'Please Fill all Mandatory Fields'], 500); 
    } 

    $insertledgers=Ledger::create(['ledger_name'=>$values['ledger_name'],'openning_balance'=>$values['openning_balance'],'ob_type'=>$values['ob_type'],'under'=>$values['under'],'ledger_address'=>$values['ledger_address'],'company_id'=>$companyids,'user_id'=>$usersid,'created_by'=>$usersid]); 

    $ledgerinsertids=$insertledgers->id; 

    if($values['ob_type'] == 'Cr'){ 

     $creditamts=$values['openning_balance']; 
     $debitamts= 0; 

    } else { 

     $creditamts=0; 
     $debitamts= $values['openning_balance']; 

    } 

    $insertledgeropenningbalance=Openningbalance::create(['ledgerid'=>$ledgerinsertids,'opening_credit'=>$creditamts,'opening_debit'=>$debitamts,'company_id' 
    => $companyids,'user_id' => $usersid,'created_by' => $usersid,]); 

    return response()->json(['success' => 'Ledger Details Added Successfully',],200); 

,并考虑:<! - 莫代尔 - >

error: function(data) 
{ 
$('#response').html(data.error).css({'color': 'red', 'text-align': 'center'}) 
$('#response').show().delay(5000).fadeOut(); 
}