ajax未调用到后台的action

bluerosehero 2013-07-26 04:59:08
页面源码没错,action的URL也没问题,直接在浏览器中调用该acion可正确执行。
但用ajax却无法调用,请大侠指导啊!!谢谢!!

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<script type="text/javascript">
function queryCertificateID(){
alert("开始查询证件类型!");
$.ajax({
type: "GET",
url: "<%=basePath%>/basebiz/queryCertificateTypeAction!queryCertificateType",
success:function(data){
alert("查询证件类型成功!");
},
error: function(){
alert("查询证件类型失败!");
}
});
}
</script>

<body onload="queryCertificateID()">
<form id="form1" name="form1" method="post" action="">
<table width="300" border="0" align="center">
<tr>
<td width="114">手机号码</td>
<td width="176"><label>
<input type="text" name="user.userPhone" />
</label></td>
</tr>
<tr>
<td>电子邮箱</td>
<td><input type="text" name="user.userMail" /></td>
</tr>
<tr>
<td>姓    名</td>
<td><input type="text" name="user.userName" /></td>
</tr>
<tr>
<td>证件类型</td>
<td><label>
<select name="user.certificateID">
<s:iterator value="#request.CertificateType">
<option value="<s:property value="#request.CertificateType.certificateID"/>"> <s:property value="#request.CertificateType.certificateName"/>
</option>
</s:iterator>
</select>
</label></td>
</tr>
<tr>
<td>证件号码</td>
<td><input type="text" name="user.certificateCode" /></td>
</tr>
<tr>
<td>密  码</td>
<td><input type="password" name="user.userPasswrod" /></td>
</tr>
<tr>
<td>确认密码</td>
<td><input type="password" name="confirmPassword" /></td>
</tr>
<tr>
<td>优 惠 码</td>
<td><input type="text" name="promocode" /></td>
</tr>
<tr>
<td>验 证 码</td>
<td><input type="text" name="verificationCode" /></td>
</tr>
<tr>
<td><label>
<div align="right">
<input type="submit" name="Submit" value="注册" />
</div>
</label></td>
<td><div align="left">同意合约
<label>
<input type="checkbox" name="accept" value="1" />
</label>
</div></td>
</tr>
</table>
</form>
</body>
</html>
...全文
292 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluerosehero 2013-07-29
  • 打赏
  • 举报
回复
引用 15 楼 fangmingshijie 的回复:
先测试下jquery是否正确引入才行
找到了,谢谢大侠!!引用路径有问题!!
  • 打赏
  • 举报
回复
引用 16 楼 bluerosehero 的回复:
[quote=引用 15 楼 fangmingshijie 的回复:] 先测试下jquery是否正确引入才行
怎么测试?[/quote]随便写一个jquery类型的函数,看看能不能获取页面的值。。。。
bluerosehero 2013-07-29
  • 打赏
  • 举报
回复
引用 15 楼 fangmingshijie 的回复:
先测试下jquery是否正确引入才行
怎么测试?
  • 打赏
  • 举报
回复
先测试下jquery是否正确引入才行
bluerosehero 2013-07-29
  • 打赏
  • 举报
回复
呼唤高手出来啊!!!
bluerosehero 2013-07-29
  • 打赏
  • 举报
回复
为什么就调用不到呢??
bluerosehero 2013-07-29
  • 打赏
  • 举报
回复
以上各位的办法都尝试了,还是不行啊!!高手支招啊!!
s478853630 2013-07-27
  • 打赏
  • 举报
回复
不用jquery的,你就用这段代码试试:
/**
 * 操作ajax的对象
 */
var ajax = {
	/**
	 * @see 创建ajax核心对象,兼容浏览器有:IE6,7,8,9,10,谷歌,火狐,欧朋,360极速,360安全,苹果,搜狗,遨游,猎豹,腾讯
	 * @return XMLHttpRequest
	 */
	getCore : function() {
		var xmlHttp = null;
		if (window.XMLHttpRequest) {
			xmlHttp = new XMLHttpRequest();
			if (xmlHttp.overrideMimeType) {
				xmlHttp.overrideMimeType("text/xml");
			}
		} else {
			if (window.ActiveXObject) {
				try {
					xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) {
					xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
			}
		}
		if (xmlHttp == null) {
			dv.alert("\u8bf7\u4f7f\u7528IE\u6d4f\u89c8\u5668!");
		}
		return xmlHttp;
	},
	
	remoteBack : null,// 跨域ajax的回调事件
	core : null,// ajax的核心对象
	
	/**
	 * @see 处理ajax参数
	 * @param param 参数, 可以是js对象或字符串: id=1&name=lisi
	 * @return String
	 */
	getParam : function(param) {
		var randomStr = "ajaxParamRandom=" + Math.random();
		if (param == null) {
			return randomStr;
		}
		var info = "";	
		if (typeof(param) == "object") {
			for (var key in param) {
				info += key + "=" + param[key] + "&";
			}
			info = (info.length > 0 ? info.substring(0, info.length - 1) : info);
		} else {
			info = param;
		}
		return info + "&" + randomStr;
	},
	
	/**
	 * @see ajax的回调函数
	 * @param callback 用户自定义回调函数
	 * @param url 请求的url
	 */
	doCallback : function(callback, url) {
		if (ajax.core.readyState == 4) {
			if (ajax.core.status == 200) {
				ajax.doBack(callback, new String(ajax.core.responseText));			
			} else if (ajax.core.status == 0 || ajax.core.status == 12029) {
				//window.location.href = path + "/login.htm";
				dv.alert("请求超时, 请稍候重试");
			} else if (ajax.core.status == 404) {
				dv.showGress("0", "1");
				dv.alert("找不到资源: " + url);
			}
		}
	},
	
	/**
	 * @see 处理ajax的回调函数
	 * @param callback 用户自定义回调函数
	 * @param result 请求的结果
	 */
	doBack : function(callback, result) {
		if (callback == null) {
			return;
		}
		if (null != result && result != "") {
			if (result == "null") {
				callback(null);
			} else {
				var backObject = null;
				if (result == "true" || result == "false") {
					backObject = eval(result);
				} else if (!isNaN(result)) {
					backObject = parseFloat(result);
				} else if ((result.substring(0, 1) == "[" && result.substring(result.length - 1, result.length) == "]") || 
						(result.substring(0, 1) == "{" && result.substring(result.length - 1, result.length) == "}")) {
					backObject = eval("(" + result + ")");
				} else {
					backObject = result;
				}
				callback(backObject);
			}
		} else {
			callback(result);
		}
	},
	
	/**
	 * @see ajax的post请求
	 * @param url 请求的url
	 * @param param 参数列表,可以是字符串或js对象或null
	 * @param callback 用户自定义回调函数
	 */
	post : function(url, param, callback) {
		ajax.doPost(url, param, true, callback);
	},
	
	/**
	 * @see ajax的post请求
	 * @param url 请求的url
	 * @param param 参数列表,可以是字符串或js对象或null
	 * @param isAsynch 是否异步
	 * @param callback 用户自定义回调函数
	 */
	doPost : function(url, param, isAsynch, callback) {
		ajax.core = ajax.getCore();
		if (ajax.core != null) {
			ajax.core.onreadystatechange = function() {
				ajax.doCallback(callback, url);
			};
			ajax.core.open("POST", url, isAsynch == null ? false : isAsynch);
			ajax.core.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			ajax.core.send(ajax.getParam(param));
		}
	},
	
	/**
	 * @see ajax的get请求
	 * @param url 请求的url
	 * @param callback 用户自定义回调函数
	 */
	get : function(url, callback) {
		ajax.doGet(url, true, callback);
	},
	
	/**
	 * @see ajax的get请求
	 * @param url 请求的url
	 * @param isAsynch 是否异步
	 * @param callback 用户自定义回调函数
	 */
	doGet : function(url, isAsynch, callback) {
		ajax.core = ajax.getCore();
		if (ajax.core != null) {
			url += (url.indexOf("?") != -1 ? "&" : "?") + "ajaxParamRandom=" + Math.random();
			ajax.core.onreadystatechange = function() {
				ajax.doCallback(callback, url);
			};
			ajax.core.open("GET", url, isAsynch == null ? false : isAsynch);
			ajax.core.send(null);
		}
	},
	
	/**
	 * @see 跨域ajax(只支持get请求, 并且主域名必须一致)
	 * @param url 请求的url
	 * @param callback 用户自定义回调函数
	 */
	remote : function(url, callback) {
		ajax.remoteBack = callback;
		url += (url.indexOf("?") != -1 ? "&" : "?") + "ajaxParamRandom=" + Math.random();
		if (com.getO("frmRemoteAjax") != null) {
			document.body.removeChild(com.getO("frmRemoteAjax"));
		}
		var iframe = document.createElement("iframe");
		iframe.setAttribute("id", "frmRemoteAjax");	
		iframe.style["display"] = "none";
		document.body.appendChild(iframe);
		com.getO("frmRemoteAjax").src = url;
	},
	
	/**
	 * 跨域ajax的请求的回调事件
	 * @param result 请求的结果
	 */
	remoteCallback : function(result) {
		document.body.removeChild(com.getO("frmRemoteAjax"));
		ajax.doBack(ajax.remoteBack, result);
	}
};
之后调用:

ajax.post("你的url", {param : "你的参数"}, function(json) {
    alert(json.message);
});
耳朵看不见 2013-07-26
  • 打赏
  • 举报
回复
路径问题:url: "<%=basePath%>/basebiz/queryCertificateTypeAction!queryCertificateType", 去掉<%=basePath%>/ 试试。
ZHOU西口 2013-07-26
  • 打赏
  • 举报
回复
你可以先试着把页面的内容全部移除,只留下<body onload="queryCertificateID()"></body>和那段js代码,看看情况,调试一下。
oh_Maxy 2013-07-26
  • 打赏
  • 举报
回复
LZ看看跳转的页面的浏览器地址栏,看看路径是否有问题。 可以考虑修改为: url: "basebiz/queryCertificateTypeAction!queryCertificateType" 试试。
bluerosehero 2013-07-26
  • 打赏
  • 举报
回复
引用 6 楼 splendid_java 的回复:
是url的问题,没有解析到
URL改怎么写?单独在浏览器中使用这个URL是可以调用到action的
ZHOU西口 2013-07-26
  • 打赏
  • 举报
回复
是url的问题,没有解析到
gqchen1981 2013-07-26
  • 打赏
  • 举报
回复
按这个格式来试试: $.ajax({ url:"", type:"POST", dataType:"json", data:"", success:function(data) { } });
bluerosehero 2013-07-26
  • 打赏
  • 举报
回复
引用 1 楼 aiqinbird 的回复:
你$.ajax({ 这个是需要jquery.js的, 没引用jquery.js 怎么调用
加了<script src="./js/jquery-1.5.2.min.js"></script>这个引用一样不调用action的
bluerosehero 2013-07-26
  • 打赏
  • 举报
回复
加了<script src="./js/jquery-1.5.2.min.js"></script>这个引用还是不执行action,请高手赐教!!
  • 打赏
  • 举报
回复
既然在地址栏都可以访问,配置就没问题,那你得好好看下javascript 中的url的值了
gqchen1981 2013-07-26
  • 打赏
  • 举报
回复
你$.ajax({ 这个是需要jquery.js的, 没引用jquery.js 怎么调用

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧