jqgrid不会从远程URL加载json数据

时间:2016-03-21 05:15:38

标签: jquery jqgrid

我在jsFiddle中设置了一个jqgrid:

$("#list").jqGrid({
            height: 700,  
            width: 900,  
            datatype: 'json', 
            mtype:'GET',
            url: url,
            colNames:['Col 1','Col 2'],
            colModel :[ 
              {name:'col1', index:'col1'},
              {name:'col2', index:'col2'},
            ],
            pager: '#pager_list',
            rowNum:20,
            rowList:[20,50,100],
            viewrecords: true,
            caption: 'Test',
            gridview : true,    
           });

http://jsfiddle.net/rw5hogz3/11

但是,它不会从远程URL加载json数据。在浏览器中加载时,json似乎很好。

但是当我在localhost上托管jqgrid和json脚本时,它确实有效。以前有没有经历过这样的事情?非常感谢任何帮助:)

2 个答案:

答案 0 :(得分:0)

您需要在服务器上启用CORS。 把它放在返回JSON的页面上

<?php
header("Access-Control-Allow-Origin: *");

如果你正在使用框架,这会稍微复杂一些。

但只是谷歌CORS,了解更多。

另外,您可以尝试使用madalins建议的jsonp数据类型。但是在jqgrid中,它并不像输入&#39; jsonp&#39;那么简单。到数据类型。你需要在ajaxGridOptions ...

中做到这一点
$("#list").jqGrid({
            height: 700,  
            width: 900,  
            datatype: 'json', 
            ajaxGridOptions: { jsonp: true, contentType: 'application/json; charset=utf-8' }, 
            mtype:'GET',
            // rest of your code

这可能不会起作用,因为你仍然可能会遇到某种CORS错误

答案 1 :(得分:0)

尝试使用Jsonp进行交叉请求

使用

    $("#list").jqGrid({
                height: 700,  
                width: 900,  
                datatype: 'json', 
                mtype:'GET',
                url: "http://202.137.146.116/tokoweblink/weblink.php?q=1&agent=ABVT0010",
                ajaxGridOptions: { jsonp: true, contentType: 'application/json; charset=utf-8' },
                colNames:['Inv No', 'Client', 'Amount'],
                colModel:[
                        {name:'id',index:'id', width:55},
                        {name:'name',index:'name asc, invdate', width:100},
                        {name:'amount',index:'amount', width:80, align:"right"}
                        ],
                 });

使用json key val分配列模型名称,索引。