Laravel: sending JSON - jqgrid - How?

A

Anonymous

Guest
Hi there,

I'm trying to populate jqgrid from database. I've jqgrid.
Laravel 4.2
I'm unable to send json data back to browser. No error, or anything.
I've data pulled from DB, made it into json format.

I'm going to post 4 code snippets:
1. jqgrid
2. routes.php -relevant
3. controller - used
4. model - used

I've a jqgrid whose code:
Code:
	$("#grid_illumina").jqGrid({

		url:'illumina/illumina_xhr_get_data',
		datatype: "json",
		contentType: "application/json", 
		mtype: "GET",		
		jsonReader: {
		    repeatitems: false,
		    id: "",
		    root:  function (obj) {
		        return obj;
		    },
		    records: function (obj) {
		        return obj.length;
		    },
		    page: function () {
		        return 1;
		    },
		    total: function () {
		        return 1;
		    }
		},
		
		colNames:['study','Sample Name','Forward Primer','Reverse Primer'],
        colModel :[ 
                   {name:"study",sortable: true}, 
                   {name: "sample_name",sortable: true},
                   {name: "forward_primer",sortable: true},
                   {name: "reverse_primer",sortable: true}
                   ],
                rowNum:10, //this sets the default row in the pager
		
            caption:"Illumina", //title of the grid
			pager: '#pager_illumina',	
   			shrinkToFit : false,
   	        rownumbers: true, //row numbers on left
   	        multiselect: true, //check box
   			height: '400', //height: 'auto',
   			width: '1100',
   			gridview: true,			
   			viewrecords:true, // this is for the View 1 - 8 of 8 \m/
   			sortorder:"asc", //asc 
   			autoencode: true, //don't know
   			sortable:true, //sort
   			loadonce: false, //loadonce is must
   			rowList:[500,1000,1500], //drop down
   			page: 1,
   			rowNum: 100
		
	});

Routes.php

Code:
Route::group(['prefix' => 'illumina', 'namespace' => Controllers\\illumina','before' => 'auth'], function() {

//send to controller
	Route::get('illumina_xhr_get_data','mainIllumina@get_illumina_data'); //called from js->illumina->grid.js
	//add functoin for Route::ajax 		
});

Controller function:

Code:
	public function get_illumina_data(){
		
		(new illumina_model())->get_data(); //get rows from illume table
	}

Model code
Code:
	public function get_data(){
		
		$illumina_sample = DB::connection('illumina')->table(
				'illume_sample')->select('study','sample_name',
				'forward_primer','reverse_primer')->get();
		//grab all sample rows
		
		return Respose::json($illumina_sample);
		exit;
	}
I've output from the JSON as:

Cache-Control: no-cache
Content-Type: application/json
Date: Thu, 03 Dec 2015 22:27:15 GMT

[
{"study":"nasal","sample_name":"A101","forward_primer":"ACTGH","reverse_primer":""},{"study":"nasal","sample_name":"A11","forward_primer":"ACTGH","reverse_primer":""},{"study":"nasal","sample_name":"B11","forward_primer":"ACTGH","reverse_primer":""},
]

In my small application, in model I simply had to
echo json_encode($rows_pulled)

And that would populate my same grid. However, here I'm clueless.
I think response has to be sent from model in laravel too. Please correct me if I'm wrong.
How do fix it?
Any help shall be highly appreciated.

Best,
pG
 
Back
Top