无法从AJAX结果中获得响应

时间:2015-12-30 10:09:24

标签: javascript jquery ajax elasticsearch

我正在尝试从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上。

还有其他想法吗?

3 个答案:

答案 0 :(得分:0)

可能你没有得到成功的回复。 尝试捕获错误和完整的方法,并检查这些情况下的响应。

它可以更好地了解电话的错误。

查看http://api.jquery.com/jquery.ajax/了解详情。

答案 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()检查您获得的响应。