在ajax prefilter中设置url会导致ajax设置中的dataType设置被忽略

时间:2012-03-31 16:47:58

标签: jquery

我正在尝试使用如下所示的ajax prefilter来操作ajax url选项,但是当使用filter调用ajax时,会使用新的url但忽略dataType,这意味着没有向url添加回调参数,我收到了一个糟糕的请求。这只有在我尝试设置新网址时才会发生。例如,当我只设置新的数据参数时,应该添加回调。当我尝试在perfilter中设置dataType选项和url时,仍然没有添加回调参数。难道我做错了什么?非常感谢您阅读此内容!

    var ajaxItem = {
        setUp: function (a) {
            $.ajaxSetup({
                url: "url1.php?",
                data: {
                    'meta_prefix': 'm_',
                },
                dataType: 'jsonp',      
            });
        }
    };

    var ajaxProd = {
        setUp: function () {
            $.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
                options.url = "url2.php?";
    //also when i set dataType here again, the callback parameter is not added to the url
            //options.dataType = 'jsonp'; 
            });
        }
    };

1 个答案:

答案 0 :(得分:0)

我找到了解决类似问题的要点(如果插件在外部域上运行,我想发送JSONP,因此它可以检索相同的数据)。

这是要点: https://gist.github.com/craveytrain/1028553

我的版本:

$.ajaxPrefilter('json', function(options) {
  // replace with your condition or remove the `if` clause and just return jsonp
  if ( true ) { 
    return 'jsonp';
  }
});