【问题标题】:jqGrid crossdomain request providing custom callback namejqGrid 跨域请求提供自定义回调名称
【发布时间】:2012-12-11 23:59:48
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:

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

    希望您在查看the answeranother one 的演示后找到问题的答案。

    【讨论】:

      【解决方案2】:

      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 问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多