javascript - Python 返回 jsonp 以进行自动完成

标签 javascript jquery python autocomplete jsonp

我正在使用 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: 回调未定义 在 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。我不知道该怎么办。为了使用自动完成功能,我应该用 python 函数返回什么?我相信我的问题就在那里。

最佳答案

问题似乎出在 Python 脚本的 HttpResponse 部分,您在其中引用了 callback()。我不知道我是否完全理解这一点,但是返回纯 JSON 不是更适合您的目的吗?所以类似:

formatted_codes = {'query': query, 'suggestions':jsonData, 'data': jsonData}
return HttpResponse(formatted_codes, mimetype="application/json")

我认为这应该足够了,即使没有 json.dumps 部分,但我不完全确定。所以你也可以返回:

return HttpResponse(json.dumps(formatted_codes), mimetype="application/json")

关于javascript - Python 返回 jsonp 以进行自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32612728/

相关文章:

JavaScript 正则表达式奇怪的行为

javascript - 类型错误 : Cannot call method '$on' of undefined

javascript - FullCalendar - 单击第二个事件时设置事件颜色

javascript - 查找当前 windows.pathname 是否包含 li a href 的位置

javascript - 在选项卡处于后台时使用 d3.js 绘制 SVG

javascript - jquery ajax inside .each 如何在整个.each完成时触发函数

javascript - 如何在没有jquery元素的情况下重写css规则?

python - 张量的 Tensorflow "map operation"?

python - 如何在 Drive-sdk 中指示我的应用程序可以打开 mimeType : 'application/vnd.google-apps.drive-sdk' ? 的文件

python - Python中的 'is'关键字是如何实现的?