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