2017-11-27 10 views
1

私はdropdownlistからドロップダウンリストを持っています。私はデータベースにajaxリクエストを送信しました。リクエストを介してjoinクエリを実行しました。データは表示されませんが、警告メソッドを使用して応答を確認すると[オブジェクト] [オブジェクト]が表示されます。ajaxリクエストでjoinクエリを実行する方法

ここに私のajaxリクエストがあります。

$(document).ready(function(){ 
    $('#client_id').on('change',function(){ 
     var id=$(this).val(); 
    //alert(id); 
     $.ajax({ 
      url:"{{route('getcheque')}}", 
      method:'post', 
      data:{id:id,'_token':"{{csrf_token()}}"}, 
      success:function(response) 
      { 
       //console.log(response); 
     alert(response); 
      } 
     }); 

    }); 
    //end client part 

}); 

ここで私のajaxリクエストメソッドです。

public function get_cheque(Request $request) 
{ 
    $id=$request->id; 
    $cdata=DB::table('directcheques') 
      ->join('clients', 'directcheques.client_id', '=', 'clients.id') 
      ->join('banks', 'directcheques.bank_id', '=', 'banks.id') 
      ->select('directcheques.*', 'clients.*', 'banks.*') 
      ->where('directcheques.id',$id) 
      ->get(); 

    return $cdata; 
} 
+1

Javascriptアラートは完全なオブジェクトの詳細を表示せず、代わりに '[object] [Object]'を表示します。 'console.log'を試して、あなたの質問に回答を追加してください。 – Manwal

+0

あなたのPHPで 'echo json_encode($ cdata)'を返すのではなく、 – Pratansyah

+0

echo json_encode show [{"id":2、 "client_id":4、 "bank_id":2、 "cheq_amt":9000、 "cheq_no ":7809、" collc_date ":" 2017-11-22 "、" collc_by ":null、" status ":0、" created_at ":" 2017-11-19 07:54:36 "、" updated_at ":" 2017-11-19 07:54:36 "、" client_name ":" majeddue "、" cont_no ":" 6742709 "、" addr ":" dhaka "、" bank_name ":" TestBank "、" branch_name ":" testbranch "}] – Gabrielle

答えて

1

あなたの応答がresponse[0].branch_nameを呼び出して、配列が働くかもしれないです。 あなたが複数のレコードを持っている場合、それはlaravelであり、あなたの予想される応答は、(代わりにGETで、1つのレコードのみが含まれている場合、あなたはfor each

を使用して反復する必要がある)は、以下を使用し、あなたは

$cdata=DB::table('directcheques') 
     ->join('clients', 'directcheques.client_id', '=', 'clients.id') 
     ->join('banks', 'directcheques.bank_id', '=', 'banks.id') 
     ->select('directcheques.*', 'clients.*', 'banks.*') 
     ->where('directcheques.id',$id) 
     ->first(); //change to first only if you need one record. 
response.branch_nameを呼び出すことができます
+0

ありがとうございます。それは適切に動作します。 – Gabrielle

0

これは、あなたが別のphp機能で返された値を使用している場合returnにのみ動作しますが、正常な動作です。

Ajaxを使用する場合はreturnの代わりにecho/printを使用してください。あなたのAjax解析JSONで

以下のような、

public function get_cheque(Request $request) 
{ 
    $id=$request->id; 
    $cdata=DB::table('directcheques') 
      ->join('clients', 'directcheques.client_id', '=', 'clients.id') 
      ->join('banks', 'directcheques.bank_id', '=', 'banks.id') 
      ->select('directcheques.*', 'clients.*', 'banks.*') 
      ->where('directcheques.id',$id) 
      ->get(); 

    echo json_encode($cdata); 
} 

var data = JSON.parse(response); 
+0

しかし、私はこのjson配列から特定のフィールドにアクセスすることはできません。私は試みました\t console.log(response.branch_name);こちらです。それは未定義のショーです。 – Gabrielle

+0

JSON.parseを使用して、クライアント側でJSONをデコードする必要があります(このようにvar data = JSON.parse(response); – CasperSL

+0

ありがとう、それは仕事です。 – Gabrielle

0
Try this, 
    $(document).ready(function(){ 
    $('#client_id').on('change',function(){ 
    var id=$(this).val(); 
    //alert(id); 
    $.ajax({ 
    dataType: "json", 
     url:"{{route('getcheque')}}", 
     method:'post', 
     data:{id:id,'_token':"{{csrf_token()}}"}, 
     success:function(response) 
     { 
      //console.log(response); 
      alert(response); 
     } 
    }); 

    }); 
    //end client part 

}); 

And in ajax request method, 

public function get_cheque(Request $request) 
{ 
    $id=$request->id; 
    $cdata=DB::table('directcheques') 
      ->join('clients', 'directcheques.client_id', '=', 'clients.id') 
      ->join('banks', 'directcheques.bank_id', '=', 'banks.id') 
      ->select('directcheques.*', 'clients.*', 'banks.*') 
      ->where('directcheques.id',$id) 
      ->get(); 

    echo json_encode($cdata); 
} 
関連する問題