【问题标题】:jQuery-tokeninput does not display search resultsjQuery-tokeninput 不显示搜索结果
【发布时间】:2014-02-16 06:48:06
【问题描述】:

似乎我遇到了某种环境问题,但我不确定如何继续调试。

我正在使用 jQuery-tokeninput,并且在 localhost 上一切正常。但是,一旦移到我的生产盒中,它就会停止工作。

我正在使用 chrome 的“开发者工具”进行故障排除。 JQuery 调用有点工作,因为数据是从数据库中收集的,我可以在响应中看到它。一切看起来都不错,但它只是不呈现下拉菜单,并且停留在“搜索”上。 Chrome 的“开发者工具”中没有出现任何错误,我在 apache 日志中也没有看到相关错误。

我被困在这里,因为没有错误很难解决问题。

任何想法/建议将不胜感激!

编辑

虽然在两种环境中此调用的响应是相同的,但标头元素的完整列表却不同。

在此处查看标题是否有任何不匹配的元素。

本地主机(windows 环境):

Request URL:http://localhost/dropdown_getcontact.php?q=raq
Accept:application/json, text/javascript, */*; q=0.01
X-Requested-With:XMLHttpRequest
Query String Parametersview sourceview URL encoded
q:raq

生产环境(linux环境):

Request URL:http://localhost/dropdown_getcontact.php?callback=jQuery110204361302594188601_1392780655198&q=raq&_=1392780655199
Accept:*/*
Query String Parametersview sourceview URL encoded
callback:jQuery110204361302594188601_1392780655198
q:raq
_:1392780655199

干杯, 克

【问题讨论】:

  • 你能发布你的代码吗?这里没有太多事情要做!
  • 虽然您的本地主机/生产框之间有什么区别 - 您是否将本地主机页面嵌入到另一个?听起来可能是重复的 id 之类的?
  • 就代码而言,本地主机和生产环境之间没有区别。另外,我将它们都放在了 web 根目录中,以确保它不是路径问题。本地主机工作,但不幸的是生产没有运气。
  • 使用 Chrome 开发人员工具检查结果,在本地主机和生产环境中的“响应”与打印结果完全相同:echo json_encode($data);因此,出于某种原因,在这一点之后,一个工作,另一个失败,在生产环境中没有抛出任何错误。目前我什至不确定如何进行进一步的故障排除。
  • 啊。您是否尝试过在生产服务器上而不是在本地托管dropdown_getcontact.php?这不是我遇到过的事情,但显然可能存在跨域问题。请参阅:loopj.com/jquery-tokeninput/#search-settings(您可以想象,如果您可以看到 JSON 响应,那将不是问题。=/)如果不这样做,您的响应的标题类型是否强制 JSON 类型,而不仅仅是文本?不会撒谎 - 不过我也抓着稻草了,对不起!

标签: jquery jquery-tokeninput


【解决方案1】:

为未来的 Google 员工写一篇完整的文章:

不允许跨域 AJAX 调用。要解决这个问题,您需要使用JSONP。有一个很好的例子来说明如何做到这一点here

jQuery TokenInput 插件自动检测跨域调用,并自动启用“JSONP 模式”,这就是我想象的阻止返回的 JSON 显示在这里的原因。我还猜想,当 localhost 是域时,Chrome 对跨域 AJAX 请求的规则放宽了,因为它远没有安全漏洞。因此,返回了您的 JSON(如果它托管在既不是本地主机也不是您的生产服务器的任何第三个域上,它就不会返回。) - 但是插件期望使用 JSONP,因此不能处理标准 JSON 输入。如果其他浏览器的行为方式相同,则插件中可能存在小错误。

作为参考,可以通过设置参数显式设置是否为跨域模式。

crossDomain = true;

出于好奇,请尝试在初始设置中包含crossDomain = false,看看是否可行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2014-01-20
    相关资源
    最近更新 更多