使用jsonp将回调参数添加到$ .ajax

时间:2013-08-20 05:54:36

标签: jquery jquery-callback

我正在尝试使用jsonp实现跨域调用的jQuery ajax调用,代码就像 -

$.ajax({
    async:true,
    cached:true,
    url: 'cfcs/TempRepository.cfc?method=getAllCategories'
        +'&storeID='+ storeId
        +'&callback=?',
    type: 'get',
    data: '',
    dataType: 'jsonp',
    success: PopulateCategoryObject,
    error: function (xhr, status, error) {
        console.log(xhr + ',' + status + ',' + error);
    }
});

function PopulateCategoryObject(results) {
    //populate the categories
}

我在这里使用回调感到困惑。 如果我删除$ .ajax的success属性并使用callback = PopulateCategoryObject代替callback =?喜欢 -

$.ajax({
    async:true,
    cached:true,
    url: 'cfcs/TempRepository.cfc?method=getAllCategories'
        +'&storeID='+ storeId
        +'&callback=PopulateCategoryObject',
    type: 'get',
    data: '',
    dataType: 'jsonp',
    error: function (xhr, status, error) {
        console.log(xhr + ',' + status + ',' + error);
    }
}); 

它的区别在于,它返回的结果如 -

PopulateCategoryObject, jQuery172012112959187034678_1376976441013( // data here )

并且,不执行PopulateCategoryObject函数。

我无法弄清楚如何设置回调函数?为什么“jQuery172012112959187034678_1376976441013”会在这里添加结果?

提前致谢。

2 个答案:

答案 0 :(得分:1)

尝试

$.ajax({
    cached:true,
    url: 'cfcs/TempRepository.cfc?method=getAllCategories' + '&storeID=' + storeId,
    jsonpCallback: 'PopulateCategoryObject',
    dataType: 'jsonp',
    error: function (xhr, status, error) {
        console.log(xhr + ',' + status + ',' + error);
    }
}); 

答案 1 :(得分:0)

如果您不希望ajax调用缓存:将"cache"参数设置为false ... 否则将其设置为true

另一件事......如果您不想使用"success"参数来触发回调,请尝试jquery $.deffer: 读这个! :http://learn.jquery.com/code-organization/deferreds/examples/