我有一个跨域请求,要求回调指定如下
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.
)};
“callback:'callme'”行似乎不起作用,因为firebug显示为请求分配的默认回调值。但是,此回调指定为
<sample URL>?callback=jqueryXXX...X
instead of
<sampleURL>?_callback=callme
jqGrid是否允许您指定自定义回调名称?
答案 0 :(得分:0)
您的主要错误是您使用了jqGrid中不存在的一些选项。您使用jQuery.ajax支持选项的callback
,crossDomain
,jsonp
和cache
,但jqGrid中没有此类选项。
我希望您在审核the answer和another one的演示后找到答案。
答案 1 :(得分: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') . "'"); ?>,
...
});
效果很好,当然可以用任何服务器语言完成。
您不必担心same origin policy问题。