php - 在 AJAX 中使用 post 传递文本框数据的正确方法
问题描述
现在我正在使用它,它运行良好,但出于某种原因,我认为这不是完成这项任务的最佳或最有效的方法。当我开始添加更多教科书输入时,它似乎会变得混乱。请查阅:
索引.html:
function saveUserData(userData) {
$.post('userData.php', {
textbox1: document.getElementById('textbox1').value,
textbox2: document.getElementById('textbox2').value,
userData: JSON.stringify(userData)
}, function(data) {
return true;
});
html:
<input name="textbox1" type="textbox1" id="textbox1">
<input name="textbox2" type="textbox2" id="textbox2">
用户数据.php:
$userData = json_decode($_POST['userData']);
$textbox1 = $_POST['textbox1'];
$textbox2 = $_POST['textbox2'];
//Insert user data
$query = "INSERT INTO users SET first_name = '".$userData->first_name."', last_name = '".$userData->last_name."', email = '".$userData->email."', picture = '".$userData->picture->data->url."', created = '".date("Y-m-d H:i:s")."', modified = '".date("Y-m-d H:i:s")."',test1 = '".$textbox1."',test2 = '".$textbox2."' ";
$insert = $db->query($query);
解决方案
编辑:好的,这样的事情怎么样?
//javascript
var toPost = {};
$("input").each(function() {
toPost[$(this).attr('name')] = $(this).val()
});
var inputs = JSON.stringify(toPost);
//send postJSON to php with $.post()
//in php
$inputs = json_decode($_POST["inputs"], true);
//now all the inputs can be accessed
foreach ($inputs as $name => $val) {
echo "input with name '$name' has value $val";
//you can do all you prepared statements and stuff with these values.
}
更通用,并且会自动将您的输入转换为一个 json 对象,其中输入的名称用作键。不要使用 $(":input") 因为这将包括按钮之类的东西。
--- 旧答案: ---
现在不能真正测试这个,但你可以做类似的事情:
//javascript:
var i = 1;
while ($('#textbox'+i).length != 0) {
postObject['textbox'+i] = $('#textbox'+i).val();
i++;
}
//postObject values are then added to the $.post call
//php:
$i = 1;
$query = "INSERT INTO users SET first_name = '".$userData->first_name."', last_name = '".$userData->last_name."', email = '".$userData->email."', picture = '".$userData->picture->data->url."', created = '".date("Y-m-d H:i:s")."', modified = '".date("Y-m-d H:i:s")."'";
while (isset($_POST["textbox$i"])) {
$query .= ", test$i = '".$_POST["textbox$i"]."'";
$i++;
}
推荐阅读
- python - 如何将熊猫数据帧的每一行写入新行单文本文件 - 每个 df 值都有要在每一行上写入的开始和结束位置
- mysql - Grafana 未知列问题
- jenkins - Jenkins Groovy:在调用不同的 Jenkins 作业时将值(列表)传递给 Active Choice 参数
- python - Treeview Tkinter 更新记录日志(后端)
- r - 用 R 迭代地保存 .Rds data.frame 对象
- typescript - 检查类型中是否存在字符串
- python - 如何在不知道页码的情况下使用 tabula 或 camelot 从一个文件中提取两个 pdf 表格?
- ios - React Native:“tintColor”不适用于 iOS 15 上的图像
- javascript - 从 Google Script 问题生成 HTML 邮件
- flutter - SERVER_ERROR:[code] 1349195 [message]:密钥哈希与任何存储的密钥哈希不匹配 Facebook Flutter