jqGrid跨域请求提供自定义回调名称

时间:2012-12-11 23:59:49

标签: javascript jquery jqgrid

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

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是否允许您指定自定义回调名称?

2 个答案:

答案 0 :(得分:0)

您的主要错误是您使用了jqGrid中不存在的一些选项。您使用jQuery.ajax支持选项的callbackcrossDomainjsonpcache,但jqGrid中没有此类选项。

我希望您在审核the answeranother 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问题。