typeahead.js可以进行跨域请求吗?

jam*_*jam 5 jsonp typeahead twitter-bootstrap

Typeahead.js是一个非常受欢迎的Twitter自动提交库.

我刚刚安装,它似乎不支持通过JSONP的跨域请求.我得到关于远程起源的错误不允许.

我google了一下,我找不到任何相关的东西.

任何人都可以确认是否支持此功能.

C B*_*ard 5

关于您的第一个问题,根据您的错误消息判断,您可能没有正确实现它,因为typeahead没有执行JSONP请求.

从Typeahead.js v0.9.3开始,您可以通过将'jsonp'作为dataType传递来执行JSONP请求,如下所示:

$('.typeahead').typeahead({
  name: 'jsonpExample',
  remote: {
    // ...
    dataType: 'jsonp'
  }
});
Run Code Online (Sandbox Code Playgroud)

您会发现typeahead现在将执行JSONP请求.

UPDATE

在回答你的第二个问题.作者的目标是支持JSONP - 并且大体上它确实有效 - 但它在当前版本的某些边缘情况下无法正常工作.

例如,如果您需要使用"回调"之外的查询来触发JSONP请求,那么您将陷入困境.在这种情况或类似情况下,您有两种选择:

1)补丁typeahead.js自己让JSONP工作.例如,回调名称问题可以通过简单的解决方案来解决

2)当暴露完整的jQuery AJAX对象时,等待v0.10被释放.不幸的是,它已经过了承诺交付日期的一个月,并且没有迹象表明它将在未来几周内完成