如何将数据传递给AJAX调用

3

有人能告诉我如何将数据传递给进行AJAX调用的JSP吗?这是我正在尝试的:

以下是我的AJAX调用:

     $.get("gridedit.jsp", { before: "row", time: "2pm" })
               .done(function(data) {
                 alert("Data Loaded: " + data);
               });

这是我的gridedit.jsp文件。

    <% String b=request.getParameter("before");

    if(b.equalsIgnoreCase("row"))
     {
System.out.println("ROW ROW ROW your boat");
        out.println("bummer");
    } %>

我希望将从gridedit.jsp返回的值存储到JavaScript变量中。我该怎么做?
请帮忙。
谢谢。
编辑:
以下是我尝试过的内容。
    $.ajax({
                url: "gridedit.jsp",

                async: true,
                cache: false,
                type:"GET",
                data: {
                    before:'row',
                      },
                      error: function(msg) { alert(msg); },
                      complete: function (xhr, status) { alert('complete: '+status); }

            });

i get two alerts, the first one says

    [object][object]

第二个说

    error

有人能解释一下发生了什么吗?

请帮忙。

谢谢。

错误信息:

这是我尝试的方法:

      $.ajax({
                url: "gridedit.jsp",
                //dataType: "json",
                async: true,
                cache: false,
                type:"GET",
                data: {
                    before:'row'
                      },
                      error: function( jqXHR, textStatus, errorThrown ) { alert(jqXHR);
                      alert(textStatus);
                      alert(errorThrown);},
                      complete: function (xhr, status) { 
                          alert('jqXHR:'+xhr);
                          alert('complete: '+status); }

            });

我按顺序得到以下警告:

jqXHR: [object][object]

测试状态:

      parseerror

错误抛出:

      Unexpected end of input

有人能帮我解决这个问题吗?我的gridedit.jsp出现了以下情况->

          <%String b=request.getParameter("before");
          System.out.println("b is here !" + b);
                        out.println("HELLO");%>

请帮忙

谢谢


1
我对Java语法不是很确定,但在我看来那看起来还不错。你期望发生什么,实际上又发生了什么?你有检查过JavaScript控制台和浏览器的网络选项卡是否有错误吗? - Jason P
请提供更多细节信息,以便更多的人查看您的问题。如果不显示实际行为或错误消息,则返回-1。 - Ruan Mendes
谢谢@Jason。我希望警报会弹出,但它没有弹出。 - AbtPst
谢谢@Juan。我没有收到任何错误消息。我只是想访问由我的gridedit.jsp发送的数据,这就是为什么我试图弹出一个警报来查看是否传递了任何数据。当我检查日志时,“ROW ROW ROW your boat”字符串被打印出来。然而,我没有看到警报。 - AbtPst
如果您正在使用Firefox进行调试,请安装Firebug插件。有一个面板可以显示出站的Ajax请求和可能返回的响应。 - Shade
2个回答

4

尝试第二次:

我有一个像这样的ajax请求:

$.ajax({
    url: "/someplace",
    dataType: "json",
    async: true,
    cache: false,
    data: {
        number0: 0,
        key: littleKey
    },
    success: function(data, status)
    {
        alert(data);
    }
});

并且它按照预期工作。

你可以在其他选项中使用 type: "GET" 来指定获取。

也许尝试让你的 .jsp 输出一些数据,无论如何都要输出,并打印出它接收到的数据是什么。


谢谢@Shade,您的意思是我可以在我的目标JSP中只执行out.println("Hello");,然后就能弹出警告框了吗? - AbtPst
1
好的,从那里开始并检查请求是否正在发出,并且您是否收到响应。但是这样,即使.jsp未获取数据,如果连接有效,它仍将发送一些内容回来。 - Shade
我尝试了上述方法,但是得到了相同的结果。当我检查日志时,“ROW ROW ROW your boat”字符串被打印出来。然而,我没有看到警报。 - AbtPst
日志中还有其他信息吗?有任何指示错误的内容吗?尝试将“test”放在<% %>标记之外,然后再次运行。 - Shade
所以弹出窗口中有'test'吗?如果是这样,那么标签内部需要输出的内容不会被记录,并且需要发送回网站。 - Shade
显示剩余2条评论

0

它在一个变量中,即传递给.done()的匿名函数中的数据变量。

无论您需要gridedit.jsp返回的数据做什么,最简单的方法是在该函数中使用它。现在,您所做的只是使用它创建包含返回数据的弹出窗口。


如果弹出窗口显示了数据,我认为提问者不会问这个问题。 - Ruan Mendes
啊,我不知道弹出框没有显示,我只是认为他/她想在另一个脚本中的其他地方使用数据。 - Shade
[object][object] 是 JSON。查看 JSON 的一种方法是通过 Firebug。一旦您查看了 AJAX 请求(它称之为 XHR),请单击请求,然后应该有一个标签为 JSON。单击它,它会展开对象结构。 - Shade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接