【问题标题】:jquery callback is not getting firedjquery 回调没有被触发
【发布时间】:2011-11-21 08:17:57
【问题描述】:

我一直在尝试使用 struts 和 json 在我的 jsp 中显示 json 数据。我正在使用 jquery post 将数据发送到 action 类,成功后,它应该触发一个回调函数是 jquery post。但是没有触发回调。

我无法在其中找到缺失的链接。

这是我的代码..

我的 struts xml..

   <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">

   <struts>

<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources"></constant>

<package name="default" extends="json-default">

  <action name="some" class="action.Testing">
    <result type="json">
     <param name="root">displaying</param>
     <param name="noCache">true</param>
    </result>

  </action>

 </package>

 </struts>

我的jsp页面如下..

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  pageEncoding="ISO-8859-1"%>
  <%@ taglib prefix="s" uri="/struts-tags" %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  http://www.w3.org/TR/html4/loose.dtd">
 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>


<SCRIPT type="text/javascript" src="javascript/json.js"></SCRIPT>
<SCRIPT type="text/javascript" src="javascript/jquery.js"></SCRIPT>
<SCRIPT type="text/javascript" src="javascript/jquery.form.js"></SCRIPT>
 <script type="text/javascript">

  function somecallback(displaying){


     var result = displaying.split(",");

  var dataintext = result[0];

    $('#sub').val(dataintext);

   }


  function test(){

    var input = { "text" : "testing entry data",
               "displaying" : "hello"
            };  

       $.post('some.action',input,somecallback,"json");
  }

    $(function(){
    $('#field').click(function(){
     test();
     return false;
     });

 </script>
 </head>
 <body>
 <s:form method="post">
 hello..
<s:submit id="field" value="click me too!!"></s:submit>
<s:textarea id="sub" name="tes" value="%{text}"></s:textarea>
<s:textarea id="second" name="tester"></s:textarea>
<div id="flag" style="height:100px;width:20px;">sfdsf</div>
<input type="text" id="hi" name="help" value="clicked here!!" />"
</s:form>
</body>
</html>

非常感谢任何建议和帮助..

谢谢你, 赫曼斯。

【问题讨论】:

  • 由于您包含三个不同的脚本,您是否检查过是否有人以不同的方式定义 jquery 对象(例如使用“$”符号)?愿这篇文章对你帮助不大 --> [link] stackoverflow.com/questions/3822248/…
  • '$' 包裹在 'jquery' 周围,在两个 js 中...
  • @hemanth 请更新您的帖子以反映当前不起作用的代码。请正确缩进并删除不需要的空行。

标签: jquery ajax json jsp struts2


【解决方案1】:

尝试更改您链接脚本的顺序,jquery 应该在您喜欢任何使用 jquery 的文件之前

<SCRIPT type="text/javascript" src="javascript/jquery.js"></SCRIPT>
<SCRIPT type="text/javascript" src="javascript/json.js"></SCRIPT>
<SCRIPT type="text/javascript" src="javascript/jquery.form.js"></SCRIPT>

另外,不要使用 onclick 使用:

$('#field').click(function(){
   test();
});

【讨论】:

  • 重新排列有助于消除我提到的错误,但仍然没有触发回调。
  • 我使用了你所说的方法,将它包裹在 $.function(){} 周围,但结果是一样的。回调不会触发。它回到动作类。和struts xml有什么关系吗??
  • this '' 应该包含来自 json 的值,即。在这种情况下,测试区域中的“你好”。我正在尝试展示这一点。它不工作。
  • 你说的是 $('#field').click(function()) 执行吗?如果是,那么我已经告诉过你,我已经通过像你所做的那样将它包裹在 $(function()) 周围来使它工作。现在,我打算调用回调函数。这不能由你所展示的来决定。如果我错了,请纠正我。
【解决方案2】:

应该先调用 jQuery 库。乍一看,这些脚本似乎是乱序的。尝试重新排列脚本并将 jquery.js 放在首位。

【讨论】:

  • 试试 $.post('some.url', input, somecallback(json){ return true; }
  • 你的意思是这样吗? $.post('some.action',input,somecallback(displaying){return true;});
  • 您是否像我给您的第一个示例一样使用 json 进行尝试?回调函数需要知道它期望返回什么样的数据。
  • $.post('some.action',input,somecallback(json){return true;}) 和 $.post('some.action',input,somecallback(json){return true ;} 两者都不起作用..它给出'语法错误,插入“)”来完成 MethodInvocation'..
【解决方案3】:

终于解决了这个问题。这是导致我找到解决方案的两个变化。

1) 正如上面亚当和查尔斯所提到的,jquery.js 应该高于要加载的任何其他 javascript。

2)我使用的jquery javascript是1.2.3版本,不支持我想要实现的,所以我下载了最新的即。 1.6.2版本,这其实支持我想要的。

谢谢。

【讨论】:

    猜你喜欢
    • 2023-02-12
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多