我正在尝试从AJAX调用的URL获取结果,但即使我通过脚本调用页面,成功方法也不会向我显示结果:
<script type="text/javascript">
function searchES() {
var term = $('input[name=q]').val(),
url = "http://localhost:9200/_search",
result = "";
//alert( term );
//alert( url );
$.ajax({
url: url,
type:'get',
data: {q: term},
dataType: 'json',
success: function(response) { $('#result').empty().append("Done is : " + response ); }
});
//event.preventDefault();
}
</script>
通过Firefox Inspect元素,我可以看到自己的“获取”已经产生。
11:00:21.900 GET XHR http://localhost:9200/_search?q= *
你能告诉我我忽略了什么吗?
非常感谢, 此致,雷迪
更新
所以问题似乎与CORS有关。 无论如何,我已将过滤添加到我正在处理的tomcat webapps应用程序的web.xml中:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
并添加了参数
crossDomain:true,
进入ajax代码但仍然出错:
阻止跨源请求:同源策略禁止读取 http://localhost:9200/_search?q= *处的远程资源。 (原因: 缺少CORS标题“Access-Control-Allow-Origin”。
弹性搜索默认禁用CORS。因此问题似乎出现在我的Tomcat webapps上。
还有其他想法吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
经过多次尝试,问题出在Elasticsearch配置上。
缺少选项
http.cors.allow-origin: "/.*/"
因此,正确的完整配置是
http.cors.allow-origin: "/.*/"
http.cors.enabled: true
并且在Ajax中必须调用
crossDomain: true,
使用此选项,我得到了正确的结果。
谢谢大家的意见和提示。
干杯,雷迪
答案 2 :(得分:-2)
首先,检查term
的值,然后在ajax调用的console.log()
中使用success()
检查您获得的响应。