0

我有一个跨域请求,需要按如下方式指定回调

http://<server>:<port>/../../abc?_callback=<callbackName>

使用 jqGrid,我不确定如何启用它。jqGrid 是 $.ajax 调用的包装器,它接受 url 并允许您指定跨域属性。我当前的配置提供了正确的响应:

$("#list").jqGrid({
url:'<sample cross domain URL>',
callback: 'callme',
mtype: 'GET',
crossDomain: true,
datatype: 'jsonp',
jsonp: true,
cache: true,
....... // other grid properties to load the layout for this dynamic data. 

)};

“回调:'callme'”行似乎不起作用,因为萤火虫显示为请求分配的默认回调值。但是,此回调被指定为

<sample URL>?callback=jqueryXXX...X 

instead of

<sampleURL>?_callback=callme

jqGrid 是否允许您指定自定义回调名称?

4

2 回答 2

0

您的主要错误是您使用了 jqGrid 中不存在的一些选项。您使用callback, crossDomain,jsonpjQuery.ajaxcache支持的选项,但 jqGrid 中没有这样的选项。

我希望您在从答案另一个中检查演示后找到您问题的答案。

于 2012-12-12T00:07:09.167 回答
0

jqgrid 和远程 URL(跨域)也有一些问题。为了解决它们,我在我的域上使用了一个 php 页面:cross-domain.php,它带有一个 GET 参数:

这是php页面的内容:

<?php
    print(file_get_contents($_GET['url']));
?>

因此,要用这样的 URL 填充 jqgrid:

jQuery("#jqgrid_table_id").jqGrid({
    url : <?php print("'cross-domaine.php?url=" . urlencode('http://www.example.com/my_json_webservice.php') . "'"); ?>,
    ...
});

它工作得很好,当然它可以用任何服务器语言来完成。

而且您不必担心同源政策问题。

于 2013-06-12T13:36:05.220 回答