如何使用jquery和JSF进行javascript ajax调用?

如何使用jquery和JSF进行javascript ajax调用?,jquery,ajax,jsf,Jquery,Ajax,Jsf,我试图在JSF primefaces xhtml文件中使用javascript发出$.ajax请求。返回的数据是primefaces中的“我的模板”页面。StockServlet未在服务器上执行。我相信它正被警察抓到。以前有人有过这个问题吗 <script> function getCubeData(){ $cubeName = $("#form\\:cubeName").val();

我试图在JSF primefaces xhtml文件中使用javascript发出$.ajax请求。返回的数据是primefaces中的“我的模板”页面。StockServlet未在服务器上执行。我相信它正被警察抓到。以前有人有过这个问题吗

         <script>
            function getCubeData(){
                $cubeName = $("#form\\:cubeName").val();
               // alert("ajax call"+$cubeName);
                $.ajax({
                    url: 'StockServlet',
                    dataType: 'json',
                    data: {cubeName: $cubeName},
                    type: 'get',
                    cache: false,
                    success: function(response)
                    {alert("success"+response);
                        var infoHTML = '';
                        $.each(response, function(stock, stockInfo)
                        {
                            infoHTML += '<p>Symbol: ' + stock + "   Company: " + stockInfo.name + '   Price: ' + stockInfo.price + '</p>';
                        })
                        $("#mycube2").innerHTML(infoHTML);
                        alert("infohtml"+infoHTML);
                    },
                    error: function(request, textStatus, errorThrown)
                    {
                        alert("error:" + textStatus);
                    },
                    complete: function(request, textStatus)
                    {
                        alert("complete" + request.responseText);
                        alert("complete" + textStatus);
                    }
                });

            }

函数getCubeData(){
$cubeName=$(“#form\\\:cubeName”).val();
//警报(“ajax调用”+$cubeName);
$.ajax({
url:'StockServlet',
数据类型:“json”,
数据:{cubeName:$cubeName},
键入:“get”,
cache:false,
成功:功能(响应)
{警报(“成功”+响应);
var infoHTML='';
$。每个(响应、功能(库存、库存信息)
{
infoHTML+='符号:'+stock+“公司:”+stockInfo.name+'Price:'+stockInfo.Price+'

'; }) $(“#mycube2”).innerHTML(infoHTML); 警报(“infohtml”+infohtml); }, 错误:函数(请求、文本状态、错误抛出) { 警报(“错误:+textStatus”); }, 完成:功能(请求、文本状态) { 警报(“完成”+请求.响应文本); 警报(“完成”+文本状态); } }); }
我的StockServlet在这里定义

@WebServlet(asyncSupported=false,name=“StockServlet”,urlPatterns={”/StockServlet}) 公共类StockServlet扩展了HttpServlet
……HTML文档中的所有相对URL以及其中的所有脚本都与HTML文档本身的URL相关。即您在浏览器地址栏中看到的URL。用于servlet的URL
URL:'StockServlet'
不以域或斜杠开头,因此与文档URL中的当前文件夹相对。显然,JSF页面本身就位于子文件夹中,因此servlet的相对URL是完全错误的。它根本不在该子文件夹中

您基本上需要向上移动一个文件夹:

url: '../StockServlet'
或者将其设置为相对域(从
/
开始):

另见:


<强>无关的< /强>到具体的问题,如果您在子文件夹URL模式中映射了<代码> FACESServs<代码> >代码> /FACS/*<代码>,那么您最好考虑将其重新映射到<代码> *.xHTML/COD>。另请参见

那么,ajax响应返回了404?例如,您是否检查了浏览器中的HTTP流量?(按F12,网络)。顺便问一下,为什么不通过
等方式使用JSF内置的ajax工具呢?节省了大量样板代码和麻烦。我检查了控制台,请求正在发送,但StockServlet没有响应。我的问题是,我试图获取xy自定义立方体散点图/图表的服务器端数据。我对primefaces还不熟悉,我看不到一种方法可以抓取JS操作的大量数据。有什么想法或方向我应该看看吗?最后一次:你到底得到了什么回应?答案就在这里。抱歉耽搁了,我有404。为了测试servlet,我使用getCubeData函数创建了一个html页面,servlet正在响应请求。当我从xhtml页面尝试getCubeData时,我得到一个404错误。我认为使用xhtml的servlet请求存在路径问题。感谢您提供的正确信息,我的xhtml位于根web的子文件夹中。更改路径允许servlet正确响应。我还将Facesservlet重新映射到*.xhtml。再次感谢。
url: '#{request.contextPath}/StockServlet'