做了个增删改查的表,新增的数据有多条,我现在都是在URL中以 ? 后加参数的形式传给php,然后,php用$_GET['']接收传过来的参数。这是可以实现新增数据的方法,我想问的是,如果新增数据特别多的情况下,php怎么接收解析传过来的参数呢?
下面是我的代码?
php:
//新增方法
function add_row(){
/*获取从客户端传过来的数据*/
$userName = $_GET['user_name'];
$userAge = $_GET['user_age'];
$userSex = $_GET['user_sex'];
$sql = "INSERT INTO t_users (user_name,user_age,user_sex) VALUES ('$userName','$userAge','$userSex')";
if(query_sql($sql)){
echo "ok!";
}else{
echo "新增成功!";
}
}
function query_sql(){
$mysqli = new mysqli("127.0.0.1", "root", "root", "crud");
$sqls = func_get_args();
foreach($sqls as $s){
$query = $mysqli->query($s);
}
$mysqli->close();
return $query;
}
js:
$(function() {
$('#save').click(function(){
addData();
});
});
function addData(){
var userName = $('#userName').val();
var userAge = $("#userAge").val();
var userSex = $('#user-sex').val() == '0' ? '男' : '女';
var addUrl = "./php/data.php?action=add_row&user_name=" + userName + "&user_age=" + userAge + "&user_sex=" + userSex;
$.ajax({
type:"post",
url:addUrl,
dataType:'json',
contentType:'application/json;charset=utf-8',
success:function(data){
console.log("success");
},
error:function(data){
console.log("data");
//添加成功后隐蒧modal框并重新加载页面
setTimeout(function(){
$('#exampleModal').modal('hide');
},500);
setTimeout(function(){
//新增成功后,重新加载数据
searchData();
},700);
}
});
}
上面写的可能不太明白,我想要表达的意思是,如果php的代码不变,变的仅是js新增这个方法中的数据组织,如果有多条数据需要新增,我把这多条数据组织为一个对象并把这个对象给解析为一个字符串传给php。那么这个php如何解析数据呢?
function addData(){
var userName = $('#userName').val();
var userAge = $("#userAge").val();
var userSex = $('#user-sex').val() == '0' ? '男' : '女';
/*var addUrl = "./php/data.php?action=add_row&user_name=" + userName + "&user_age=" + userAge + "&user_sex=" + userSex;*/
var addUrl = "./php/data.php?action=add_row";
var addData = {
'user_name':userName,
'user_age':userAge,
'user_sex':userSex
};
var jsonData = JSON.stringify(addData);
$.ajax({
type:"post",
url:addUrl,
data:jsonData,//传给php
dataType:'json',
contentType:'application/json;charset=utf-8',
success:function(data){
console.log("success");
},
error:function(data){
console.log("data");
//添加成功后隐蒧modal框并重新加载页面
setTimeout(function(){
$('#exampleModal').modal('hide');
},500);
setTimeout(function(){
searchData();
},700);
}
});
}
求大侠解答一下,非常感谢!
黄舟2017-05-16 13:01:35
新しい操作の場合、Ajax は json(data:{a:'',b:'',c:''}) データを送信し、php がそれを受信した後、jsondecode($_POST['data']) を使用します。 )
phpcn_u15822017-05-16 13:01:35
すべてのパラメータを json 数値に入れてバックグラウンドに渡します: {'username': xxx, 'age': xxx}
、コードのコメントとロジックに従って、それらのコードはエラーではなく成功として書き込まれるはずです
PHP中文网2017-05-16 13:01:35
何を言っているのかわかりません。Ajax は受信後に直接返します。デフォルトは dataType:'json' です。これは、php で返されるデータが json 形式でない限り、エラーが発生することを意味します。報告した。上記の //echo "追加に成功しました!" を見てください。これにより、ajax エラーが直接報告されます。
リーリーPHPz2017-05-16 13:01:35
成功の条件は (xmlHttp.readyState == 4) && (xmlHttp.status == 200) です
リクエストしたアドレスから返されたステータス コードが 200 かどうか確認してください。
$_GET は配列であるため、パラメータが多い場合は、$_GET を変数に直接割り当てることができます。
漂亮男人2017-05-16 13:01:35
1. ajax の送信メソッドは teyp: "post" ですが、php が受け取るパラメータは $_GET です。
2. ajax が受け取るデータ形式は dataType: 'json' ですが、php が返す結果はテキストです。
3.ajax リクエスト コンテンツの形式 contentType:'application/json;charset=utf-8'、リクエストされたデータは json 文字列である必要があります。php を使用してバックグラウンドでデータを受信する場合は、$data = file_get_contents(" を使用できます。 php://input "); json_decode($data, true)、リクエストパラメータです (HttpRequest (転送) の 4 つの共通 ContentType)
4.sql はインジェクションから保護する必要があります