【发布时间】:2015-12-13 06:48:41
【问题描述】:
我正在使用 devbridge https://www.devbridge.com/sourcery/components/jquery-autocomplete/ 的自动完成功能。 我试图在同一服务器内但在不同的端口中获取 json 数据。所以我有跨域的问题。我已经尝试并阅读了许多关于这个问题的不同方法,但我无法解决它。所以我有一个返回这个的python函数:
formatted_codes = {'query': query, 'suggestions':jsonData, 'data': jsonData}
data = json.dumps(formatted_codes)
return HttpResponse("callback(%s);"%data,mimetype="application/javascript")
我正在尝试在自动完成中使用它:
$(function(){
options = {
serviceUrl:'http://linkname/apps/getSuggestions/start_auth?record_id=4dfcb2eb-1c71-4da1-8b3e-cbf4918a042;query=can;',
// jsonpCallback: 'callback',
dataType: 'jsonp',
cache: false,
crossDomain: true,
success: function(data) {
return { value: data.suggestions};
},
error:function(jqXHR, textStatus, errorThrown){
alert(errorThrown);
}
};
a = $('#query').devbridgeAutocomplete(options);
});
但它不起作用。它说 ReferenceError: callback is not defined 在萤火虫中,我可以看到 python 函数的结果:
callback({'query': 'can', 'suggestions': ['Cane', 'Canal', 'Candy', 'Canis', 'Canoe', 'Canada', 'Canary', 'Canola', 'Cantil', 'Decane', 'Toucan', 'Candida', 'Candiru', 'Candoia', 'Canidae', 'Cannula', 'Indican', 'Pelican', 'Scanner', 'Acanthis'], 'data': ['Cane', 'Canal', 'Candy', 'Canis', 'Canoe', 'Canada', 'Canary', 'Canola', 'Cantil', 'Decane', 'Toucan', 'Candida', 'Candiru', 'Candoia', 'Canidae', 'Cannula', 'Indican', 'Pelican', 'Scanner', 'Acanthis']});
我也尝试过使用 jsonCallback: 'callback', variable。我也尝试只返回文本而不是 json。我不知道该怎么办。为了使用自动完成功能,我应该使用 python 函数返回什么?我相信我的问题就在那里。
【问题讨论】:
标签: javascript jquery python autocomplete jsonp