我的HTML代码是这样的
<form name="biaodan" method="post" action="">
姓名:<input type="text" id="xingming"name="xingming" /><br />
品牌:<input type="text" name="pinpai" /><br />
订单:<input type="text" name="dingdan" /><br />
邮箱:<input type="text" name="youxiang" /><br />
<input type="button" value="提交表单" onClick="saveUserInfo()">
</form>
我需要把表单内的数据发送到ajax_so.php 请问怎么写,只需要ajax代码,php接受我知道是这样的
<?php
$xingming= $_POST['xingming'];
$pinpai= $_POST['pinpai'];
$dingdan= $_POST['dingdan'];
$youxiang= $_POST['youxiang'];
?>
我知道大概的写法,但是提交不上去
var userName = f.xingming.value;
var userAge = f.pinpai.value;
var userSex = f.dingdan.value;
var userSex1 = f.youxiang.value;
//接收表单的URL地址
var url = "./ajax_so.php";
//需要POST的值,把每个变量都通过&来联接
var postStr = "xingming="+ userName +"&pinpai="+ userAge +"&dingdan="+ userSex +"&youxiang="+ userSex1;
对于js提交php请求,如果已经决定使用ajax,那么在form上就不用再填写表单的提交方式post,和提交目的地址 action。
否则,当你点击按钮的时候,就会发送两个请求出去。第一个是ajax发送的,第二个是form表单发出去的,这一个可以在开发者工具中的 network中看到。
如果没有明确指定ajax的头部信息,那么ajax传递上服务器的参数应该是json结构,或者formData。而并非直接拼接字符串,如果是直接字符串拼接到地址之后,请使用get请求的方式
html+js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<form name="biaodan">
姓名:<input type="text" id="xingming" name="xingming"/><br/>
品牌:<input type="text" name="pinpai"/><br/>
订单:<input type="text" name="dingdan"/><br/>
邮箱:<input type="text" name="youxiang"/><br/>
<input type="button" value="提交表单" onClick="saveUserInfo()">
</form>
<script>
function saveUserInfo() {
var data = {};
$('[name="biaodan"]>input').not('[type="button"]').each(function (i, v) {
data[$(v).attr('name')] = $(v).val();
});
var url = './ajax_so.php';
$.ajax({
url: url,
type: "post",
data: data,
dataType: "json",
success: function (result) {
console.log(result);
}
});
}
</script>
</body>
</html>
php:
<?php
$xingming = $_POST['xingming'];
$pinpai = $_POST['pinpai'];
$dingdan = $_POST['dingdan'];
$youxiang = $_POST['youxiang'];
echo json_encode($_POST, true);
js代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title> 页面名称 </title>
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
function saveUserInfo() {
var f = document.forms.biaodan;
var userName = f.xingming.value;
var userAge = f.pinpai.value;
var userSex = f.dingdan.value;
var userSex1 = f.youxiang.value;
//接收表单的URL地址
var url = "./ajax_so.php";
//需要POST的值,把每个变量都通过&来联接
var postStr = "xingming="+ userName +"&pinpai="+ userAge +"&dingdan="+ userSex +"&youxiang="+ userSex1;
console.log(postStr);
$.ajax({
url: url,
type: "POST",
data: postStr,
dataType: "text",
success: function (data) {
console.log("提交成功,php返回的内容:");
console.log(data);
}
});
}
</script>
</head>
<body>
<form name="biaodan" method="post" action="">
姓名:<input type="text" id="xingming"name="xingming" /><br />
品牌:<input type="text" name="pinpai" /><br />
订单:<input type="text" name="dingdan" /><br />
邮箱:<input type="text" name="youxiang" /><br />
<input type="button" value="提交表单" onClick="saveUserInfo()">
</form>
</body>
</html>
先引入jquery库,调用jquery库的$.ajax()就好。
不过你这样字符串拼接有漏洞,如果输入的内容中有&和=就会出错,需要用 encodeURIComponent()对输入的内容进行下编码。
var postStr = "xingming="+ encodeURIComponent(userName) +"&pinpai="+ encodeURIComponent(userAge) +"&dingdan="+ encodeURIComponent(userSex) +"&youxiang="+ encodeURIComponent(userSex1);
或者写成json对象,交由$.ajax()进行处理var postStr = { "xingming": userName, "pinpai": userAge, "dingdan": userSex, "youxiang": userSex1 };
对于js提交php请求,如果已经决定使用ajax,那么在form上就不用再填写表单的提交方式post,和提交目的地址 action。
否则,当你点击按钮的时候,就会发送两个请求出去。第一个是ajax发送的,第二个是form表单发出去的,这一个可以在开发者工具中的 network中看到。
如果没有明确指定ajax的头部信息,那么ajax传递上服务器的参数应该是json结构,或者formData。而并非直接拼接字符串,如果是直接字符串拼接到地址之后,请使用get请求的方式
html+js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<form name="biaodan">
姓名:<input type="text" id="xingming" name="xingming"/><br/>
品牌:<input type="text" name="pinpai"/><br/>
订单:<input type="text" name="dingdan"/><br/>
邮箱:<input type="text" name="youxiang"/><br/>
<input type="button" value="提交表单" onClick="saveUserInfo()">
</form>
<script>
function saveUserInfo() {
var data = {};
$('[name="biaodan"]>input').not('[type="button"]').each(function (i, v) {
data[$(v).attr('name')] = $(v).val();
});
var url = './ajax_so.php';
$.ajax({
url: url,
type: "post",
data: data,
dataType: "json",
success: function (result) {
console.log(result);
}
});
}
</script>
</body>
</html>
php:
<?php
$xingming = $_POST['xingming'];
$pinpai = $_POST['pinpai'];
$dingdan = $_POST['dingdan'];
$youxiang = $_POST['youxiang'];
echo json_encode($_POST, true);