Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ajax将javascript变量传递给servlet_Java_Javascript_Ajax_Servlets - Fatal编程技术网

使用ajax将javascript变量传递给servlet

使用ajax将javascript变量传递给servlet,java,javascript,ajax,servlets,Java,Javascript,Ajax,Servlets,我有一个从javascript代码中恢复的frameId变量,我想将它传递到我的servlet,为此我使用ajax,但它不起作用: 以下是我的javascript方法: function createYTEvent(frameID,j) { return function (event) { var player = playerArray[frameID]; var duration=player.getDuration(); if(!videoArr

我有一个从javascript代码中恢复的frameId变量,我想将它传递到我的servlet,为此我使用ajax,但它不起作用:

以下是我的javascript方法:

function createYTEvent(frameID,j) {
    return function (event) {
        var player = playerArray[frameID];
        var duration=player.getDuration();

if(!videoArray[j].valide){
         if (event.data == YT.PlayerState.PAUSED) {
        if(((player.getCurrentTime()*100)/duration)>2){
                    videoArray[j].valide=true;
                $.ajax({
                     type: 'GET',
                     url: 'localhost:8080/favoris',
                     data: frameID
                     });
                    }
                }
         if (event.data == YT.PlayerState.ENDED) {
        videoArray[j].valide=true;
                alert("frame id"+frameID + "valide= "+ videoArray[j].valide);
                }
        }
    }
}
这是我的servlet:favoris.java

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        String n1 = request.getParameter("frameID");
        out.println(n1);


    } 

您能帮我吗…

根据您在服务器上处理get请求的方式,听起来您希望在ajax调用中使用名为“frameID”的命名参数。如果是这种情况,那么ajax调用中的
数据
行需要更改为:

$.ajax({
     type: 'GET',
     url: 'localhost:8080/favoris',
     data: {"frameID": frameID}
});
这将把它作为
localhost:8080/favoris?frameID=xxx
放入URL,然后是服务器端代码
request.getParameter(“frameID”)
可以从URL参数获取它



另外,在将来,
“不起作用”
不是一个非常有用的描述发生了什么,这往往使我们不得不猜测什么可能是错误的。你应该解释你在服务器上观察到了什么,以及你采取了什么样的调试或诊断步骤。

< P>谢谢你对我的回应,我会考虑你的意见。 我将servlet放在一个包(package1)中

下面是我的servlet的doGet方法的代码

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
   response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    String n1 = request.getParameter("frameID");
    out.println(n1);
} 

变量frameId的内容不会出现在输出中,即段落并不总是出现。

有必要在servlet和url之间进行如下映射(对应):

@WebServlet(name = "favoris1")
public class favoris extends HttpServlet
例如,如果项目名为“MyProject”,url必须为:

var url="/MonProjet/favoris1"
突然,ajax代码变成:

$.ajax({
                 type: 'GET',
                 url: '/exempleYoutube/favoris1?frameID='+frameID,
                 success: function(resp){
                    alert(resp);
                }
                 });
和servlet:

@WebServlet(name = "favoris1")
public class favoris1 extends HttpServlet {
.
.
.
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        String n1 = request.getParameter("frameID");
        out.println("frameID= "+n1);
    }
@WebServlet(name = "favoris1")
public class favoris1 extends HttpServlet {
.
.
.
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        String n1 = request.getParameter("frameID");
        out.println("frameID= "+n1);
    }