我正在尝试使用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”会在这里添加结果?
提前致谢。
答案 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/