【问题标题】:AJAX call not working in jQGridAJAX 调用在 jQGrid 中不起作用
【发布时间】:2013-08-07 19:09:05
【问题描述】:

我正在尝试在

中进行 AJAX 调用
       beforeSelectRow

我的网格事件为:

      beforeSelectRow: function(rowid, e) {

            $.ajax({
                url: "gridedit.jsp",
                dataType: "json",
                async: true,
                cache: false,
                type:"GET",
                data: {
                    before:'row',
                      },
                success: function(data, status)
                {
                    alert(data);
                }
            });
            return true; 
        }

这是我的 gridedit.jsp:

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

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

我没有收到任何错误消息。我只想访问我的 gridedit.jsp 发送的数据,这就是为什么我试图弹出一个警报以查看是否有任何数据正在传递。当我检查 apache tomcat 日志时,会打印“ROW ROW ROW 你的船”字符串。但是,当我选择一行时,我没有看到警报。

请帮忙

谢谢

编辑:

这也是我尝试过的

    $.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); }

            });

我收到两个警报,第一个说

    [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: [对象][对象]

测试状态:

      parseerror

错误抛出:

      Unexpected end of input

谁能帮我解决这个问题?我的 gridedit.jsp 是这样做的->

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

请帮忙

谢谢

【问题讨论】:

  • 如果您捕获网络流量(使用 Fiddler、Chome 的网络开发人员工具选项卡等),您会看到什么?您是否看到服务器的预期结果?
  • 嗨@Michael Freake,我可以检查tomcat日志,一切看起来都不错。如果我调用成功:函数(数据,状态){警报(状态); }
  • 然后警报显示“错误”!你能想到我的状态被返回为错误的任何原因吗?

标签: javascript jquery ajax jsp jqgrid


【解决方案1】:

您的 JSON 格式可能不正确。尝试返回带引号的字符串,例如"\"ROW ROW ROW your boat\""

【讨论】:

  • 我想返回“无赖”。它不应该在警报中弹出吗?问题是我的 ajax 状态显示错误,这意味着调用未成功完成。至少是它应该获取数据的部分。请看上面的编辑
  • 错误函数接受 3 个参数,其类型签名为:Function( jqXHR jqXHR, String textStatus, String errorThrown )。尝试提醒所有这些以查看正在发生的事情,或者更好的是,在 error 函数内调试和设置断点。
  • 谢谢你说的我试过了。请看编辑。我解释我遇到了什么错误
  • 您可能需要设置正确的 JSON mime 类型,请参阅:stackoverflow.com/questions/249692/…
【解决方案2】:

试试这个。

beforeSelectRow: function(rowid, e) {
 $.ajax({
                url: "gridedit.jsp",
                async: true,
                cache: false,
                type:"GET",
                data: {
                    before:'row',
                      },
                success: function(data, status)
                {
                    alert(data);
                }
            });

        }

gridedit.jsp

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

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

希望这会有所帮助 谢谢

【讨论】:

  • 您将收到“bummer”作为警报谢谢
  • 感谢您的回复。我发现出了什么问题。我的 gridedit.jsp 在顶部有一些代码,它创建了一些额外的标题。我删除了它,现在它工作正常。
【解决方案3】:

我知道出了什么问题。我的 gridedit.jsp 在顶部有一些代码,它创建了一些额外的标题。我删除了它,现在它可以正常工作了。

【讨论】:

    猜你喜欢
    • 2017-04-07
    • 2017-06-10
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多