好像我有某种环境问题,但我不确定如何继续调试。
我正在使用jQuery-tokeninput,并且在localhost上运行良好。但是,一旦移到我的生产箱,它就会停止工作。
我正在使用chromes的“开发者工具”来解决问题。 JQuery调用有点工作,因为数据是从数据库中收集的,我可以在响应中看到它。一切看起来都不错,但它只是没有渲染掉下来,而且它仍然停留在'搜索'上。 Chrome的“开发人员工具”中没有出现任何错误,我发现apache日志中没有相关错误。
我被困在这里,因为没有任何错误会让拍摄变得困难。
任何想法/建议都会非常感激!
尽管此调用的响应在两个环境之间都是相同的,但标题元素的完整列表却不是。
在这里查看标题是任何不匹配的元素。
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
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
干杯, CK
答案 0 :(得分:1)
为未来的Google员工撰写完整文章:
不允许跨域AJAX调用。要解决此问题,您需要使用JSONP。有一个很好的例子说明如何做到here。
jQuery TokenInput插件自动检测跨域调用,并自动启用“JSONP模式”,这是我想象的阻止返回的JSON显示在这里。我还猜想,当localhost是域时,Chrome已经放宽了对跨域AJAX请求的规则,因为它远不是安全漏洞。因此,您的JSON被返回(如果它已经托管在任何第三个域上,它既不是localhost,也不是您的生产服务器,那么它就不会这样了。) - 但是该插件期望使用JSONP,因此不能处理标准的JSON输入。如果其他浏览器以相同的方式运行,则插件中存在潜在的小错误。
作为参考,您可以通过设置参数明确设置是否处于跨域模式。
crossDomain = true;
出于好奇,请尝试在启动原始设置时加入crossDomain = false
,看看是否有效。