提供自定义回调名称的 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 有什么方法可以指定自定义回调名称吗?

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

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

我在jqgrid和远程URL(跨域)方面也遇到了一些问题。为了解决这些问题,我在我的域上使用了一个 php 页面:跨域.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') . "'"); ?>,
    ...
});

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

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

最新更新