我正在使用devbridgehttps://www.devbridge.com/sourcery/components/jquery-autocomplete/的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没有定义 在firebug中我可以看到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',变量。我还尝试只返回文本而不返回json。我不知道该怎么办。为了使用autocomplete,我应该用python函数返回什么?我相信我的问题就在那里。你知道吗
我设法找到了一个解决方案,但需要访问服务器。我使用了简单的json格式,并通过更改Apache2中的设置来解决跨域问题。 在/etc/apache2/sites available/default中,我在<;VirtualHost*:8000>;这行中添加了:
也在里面
我还启用了mod\u头
取消对行的注释http.conf文件或apache2.conf:
重新启动apache2:
希望有帮助。你知道吗
问题似乎出在Python脚本的
HttpResponse
部分,其中引用了callback()
。我不知道我是否完全理解这一点,但是返回纯JSON不是更好吗?比如:我认为这应该足够了,即使没有
json.dumps
部分,但我不完全确定。所以你也可以返回:相关问题 更多 >
编程相关推荐