2016-07-23 3 views
1

Ich bin seltsam Problem beim Zugriff auf JSON-Antwort.JSON-Antwort ist leer in Chrom-Konsole CodeIgniter

Wenn ich URL: http://testproject/api/index.php/admin_customers/

JSON Antwort:

[{"name":'abc'}, {"name":'def'}, "name":'xyz'}] 

Aber wenn ich versuche, das gleiche von Ajax mit jqGrid zu tun, Ich erhalte keine Daten.

Mein Controller-Code:

class Api extends CI_Controller { 
    public function admin_customers(){ 
    $query = "select * from customer"; 
    $rows = $this->db->query($query); 
    $array_rows = $rows->result(); 
    $json_data = json_encode($array_rows); 
    header('Content-Type: application/json'); 
    echo $json_data; 
    } 
} 

Kein Glück auch nach versucht, wie:

return $this->output 
      ->set_content_type('application/json') 
      ->set_status_header(200) 
      ->set_output($json_data); 

Ausgangsansprechzeit In Console:

enter image description here

Mein jqGrid JavaScript-Code ist :

$("#data-grid").jqGrid({ 
     url:'http://localhost/testproject/index.php/api/admin_customers/', 
     mtype: "GET", 
     datatype: "json", 
     colModel: [ 
      { label: 'Name', name: 'name', key: true, width: 75, editable: true} 
     ], 
     editurl:'http://localhost/testproject/api/admin_customers_edit/', 
     viewrecords: true, 
     height: 250, 
     rowNum: 20, 
     pager: "#jqGridPager" 
    }); 

Was mache ich falsch?

Unabhängig von jQgrid wird es in der Chrome-Konsole selbst nicht angezeigt.

+0

Und wo ist Js-Code? –

+1

Ist die Datei mit JavaScript-Code ** von der gleichen Herkunft **? Ich meine: können Sie URLs ''http: // localhost/testproject/index.php/api/admin_customers /'' in etwas wie ''testproject/index.php/api/admin_customers /'' ersetzen? Es könnte sein, dass Sie [selbe Herkunft] (https://en.wikipedia.org/wiki/Same-origin_policy) Problem haben. – Oleg

+0

Ja, es ist von der gleichen Domain. Ich kopierte alle meine Projektordner auch in einen anderen Ordner und versuchte mit http: // localhost/testproject-api/api/admin_customers für Rest Anruf und ich verwende die http: // localhost/testproject /, aber immer noch das gleiche Problem gesehen. Ist es wegen localhost? Wie man mit dieser Situation umgeht. Alle Dateien sollten von der gleichen Domäne selbst bedient werden, wie wir derzeit keine andere Option haben – Mithun

Antwort

0

@Oleg war Ritus, es war Kreuz Ursprung Skriptfehler. Also habe ich es endlich geschafft, es durch das Senden Extra-Header Inhalt wie unten, indem Quer Herkunft Scripting zu tun:

public function admin_customers(){ 
     $query = "select * from customer"; 
     $rows = $this->db->query($query); 
     $data = $rows->result(); 
     header('Content-type: application/json'); 
     header("Access-Control-Allow-Origin: *"); 
     header("Access-Control-Allow-Methods: GET"); 
     header("Access-Control-Allow-Methods: GET, OPTIONS"); 
     header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding"); 
     echo json_encode($data, JSON_NUMERIC_CHECK); 
    } 

Das ist mein Problem endlich gelöst :)

Aber das ist Sicherheitsfragen. Wir müssen auch hier die Tokens autorisieren, wenn ich nicht falsch liege.