首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

求指导:Jquery ajax有关问题

2013-07-20 
求指导:Jquery ajax问题在学习jquery ajax的过程中遇到了些问题,网上找了N久没能解决。希望各位大大指点一

求指导:Jquery ajax问题
在学习jquery ajax的过程中遇到了些问题,网上找了N久没能解决。
希望各位大大指点一二。
小弟先谢过了。
JSP代码:
$(document).ready(function(){
  $("#searchdeptimg").click(function(){
var param = $("#cdepname").val();
$.ajax({
type: "post",
dataType: "json",
url: "${dynamicURL}/riskestimate/createIcreConditionSearch.action",
data: {"searchinfo":"hehe"},
success:
  function(data){
alert(data.msg);
  },
error:
  function(XMLHttpRequest, textStatus, errorThrown){
        alert("status:"+XMLHttpRequest.status);
                        alert("readyState:"+XMLHttpRequest.readyState);
                        alert("error:"+textStatus);
  }
});
  });
});
Acrion中java代码:
private String searchinfo;
public String getSearchinfo() {
       return searchinfo;
}
public void setSearchinfo(String searchinfo) {
       this.searchinfo = searchinfo;
}
HttpServletRequest rquest = this.getRequest();//父类的方法
HttpServletResponse response = this.getResponse();//父类的方法
private PrintWriter out = null;
public String execute() throws Exception {
      response.setContentType("text/html");
      response.setCharacterEncoding("UTF-8");  
      out = response.getWriter();
out.flush();
out.write("{"msg":"发送成功"}");
out.flush();  
out.close();

return SUCCESS;
}
问题来了:
1.jquery ajax传到action的值 用什么、怎么接收?
2.为什么在JS里写上dataType:"json" 就会一直走error的function呢?打印出的信息分别是status:200、readyState:4、error:parsererror。
3.如果不写dataType: "json"的话,可以返回到success的function。但是data打印出来却是整个JSP页面的html,这是为什么呢?
4.有木有ArrayList转化为json的方法呢?
求指导:Jquery ajax有关问题
真心求指导~~~


juery ajax


[解决办法]
用jar 转json 的很多。搜下 ,你的错误
[解决办法]
1.Action中写上对应的get set方法不就可以接收了吗
2.dataType是返回的类型吧,可能你返回的不是json类型才会跳到error中去
3.看下你struts.xml中的配置
4.GSon可以把集合转成json
发下struts.xml吧
[解决办法]
你的action中有对应参数的set方法,就可以获取到对应参数的值了,或者在你的后台方法中【execute方法】,通过request对象来获取【getParameter方法】

你的execute方法不要有返回值了,设置为void就可以了,你返回的"success"路由串在你的struts.xml文件中应该对应了一个页面,所以它不能解析为json对象,当你指定dataType为"json"时,自然就报错转向error对应的方法中去了
[解决办法]

1.jquery ajax传到action的值 用什么、怎么接收?
R: 与form的取法一样,可以使用request.getParameter(“searchinfo”)
2.为什么在JS里写上dataType:"json" 就会一直走error的function呢?打印出的信息分别是status:200、readyState:4、error:parsererror。
R:action 类型设置与前面的不符合   response.setContentType("text/html");
 应设置为  response.setContentType("text/javascript;charset=utf-8");
3.如果不写dataType: "json"的话,可以返回到success的function。但是data打印出来却是整个JSP页面的html,这是为什么呢?
R:你的打印参数没设置正确  PrintWriter out = null;
应为 PrintWriter out = response.getWriter();
4.有木有ArrayList转化为json的方法呢?
R:这个很多,gson,json-lib jackson 都可以实现,具体的去baidu下很多资料

供你参考
[解决办法]
我用struts+ajax时是这样用的你可以试下

package com.softeem.jingdong.action;

import java.io.InputStream;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.softeem.jingdong.entity.Users;
import com.softeem.jingdong.service.UsersService;
import com.softeem.jingdong.util.GetBean;
import com.sun.xml.internal.messaging.saaj.util.ByteInputStream;

public class RegisterAction extends ActionSupport {
private static final long serialVersionUID = 1L;

//获取用户注册信息
private String name;
private String password;
private String code;

public String register(){

try{
UsersService usersService = (UsersService)GetBean.getBean("usersServiceImpl");

Users users = new Users();
users.setName(name);
users.setPassword(password);

usersService.addUsers(users);

}catch(Exception e){
e.printStackTrace();
return ERROR;
}

return SUCCESS;
}

public InputStream getCheckCode(){


String secode = ActionContext.getContext().getSession().get("validateCode").toString();

System.out.println("--------------" + code + ">>" + secode);

if(secode.equalsIgnoreCase(code)){
return new ByteInputStream("ok".getBytes(), 0);
}else{
return new ByteInputStream("error".getBytes(), 0);
}

}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}

}



<!-- 验证验证码 -->
<action name="checkRegisterAction" class="com.softeem.jingdong.action.RegisterAction">
<result type="stream">
<param name="contentType">text</param>
<param name="inputName">checkCode</param>
</result>
</action>

[解决办法]
这里

热点排行