ajax传值 php获取不到
<!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>
<link rel="stylesheet" type="text/css" href="../css/style.css" />
<style type="text/css">
.btn{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;
background-color: #ff8400;color: #fff;display: inline-block;height: 28px;line-height: 28px;text-align: center;
width: 72px;transition: background-color 0.2s linear 0s;border:none;cursor:pointer;margin:0 0 5px;}
.demo{width:700px;margin:0 auto}
.btn:hover{background-color: #e95a00;text-decoration: none}
.ul_pics li{float:left;width:160px;height:160px;border:1px solid #ddd;padding:2px;text-align: center;margin:0 5px 5px 0;}
.ul_pics li .img{width: 160px;height: 140px;display: table-cell;vertical-align: middle;}
.ul_pics li img{max-width: 160px;max-height: 140px;vertical-align: middle;}
.progress{position:relative;padding: 1px; border-radius:3px; margin:60px 0 0 0;}
.bar {background-color: green; display:block; width:0%; height:20px; border-radius:3px; }
.percent{position:absolute; height:20px; display:inline-block;top:3px; left:2%; color:#fff }
</style>
<script type="text/javascript">
var $_GET = (function(){
var url = window.document.location.href.toString();
var u = url.split("?");
if(typeof(u[1]) == "string"){
u = u[1].split("&");
var get = {};
for(var i in u){
var j = u[i].split("=");
get[j[0]] = j[1];
}
return get;
} else {
return {};
}
})();
</script>
</head>
<body>
<?php $username=$_GET["username"];?>
<div id = "tabletitle"> 车辆管理系统</div><br/>
<div align="center" > <input class="btn" type="button" id="bcaiwu" value="财务录入"/> <input class="btn" type="button" id="bdel" value="删除车辆"/> <input class="btn" type="button" id="addnew" value="新车录入"/> <input class="btn" type="button" id="bsearch" value="查询车辆"/> <input id="vin" type="text" size="18" maxlength="6" placeholder="车架号后六位"></div>
<script src="../js/jquery.js"></script>
<script type="text/javascript">
$("#addnew").on("click", function () {
var formData = new FormData();
var vin=$("#vin").val();
var username=$_GET["username"];
formData.append('vin',vin);
formData.append('username',username);
$.ajax({
url:"mainadd.php",
type:"POST",
traditional:true,
data:formData,
processData:false,
success:function () {
window.location.href="mainadd.php";
}
})
})
</script>
</body>
</html>
后台PHP
<?php
$vin=$_POST["vin"];
?>
错误:Warning: Undefined array key "vin" in
你的代码 mainadd.php 访问了两次,
第一次是 $.ajax({ url:"mainadd.php",.... ajax请求,
第二次是 window.location.href="mainadd.php"; 页面跳转。
vin参数只在第一次ajax请求访问mainadd.php时传递。第二次页面跳转访问mainadd.php时没有传递参数。
你在浏览器中看到的Warning: Undefined array key "vin" 这个错误就是第二次页面跳转访问mainadd.php时的错误。
第一次ajax请求访问mainadd.php时应该没有错误。
你需要知道ajax请求是不会跳转页面的,
mainadd.php输出的内容要在success:函数中获取
success:function (data) {
alert("mainadd.php输出的内容:" + data);
// window.location.href="mainadd.php"; 不要页面跳转 第二次页访问mainadd.php
}
如果你需要跳转页面就不能用ajax,请使用<form>表单提交。
contentType: false,加上,我这里测试正常。你看下浏览器控制台报什么错误?
mainadd.php
<?php
$vin=$_POST["vin"];
echo $vin;
?>
$("#addnew").on("click", function () {
var formData = new FormData();
var vin=$("#vin").val();
var username=$_GET["username"];
formData.append('vin',vin);
formData.append('username',username);
$.ajax({
url:"mainadd.php",
type:"POST",
traditional:true,
data:formData,
processData:false,
contentType: false,
success:function (s) {
alert('服务器返回'+s)
}
})
return false;
})
contentType设置成multipart/form-data
原因在:window.location.href="mainadd.php";
ajax本身没有问题,已经成功了,然后触发了跳转;
跳转页面本身没有post数据,当然会报错;