在AJAX中使用post传递文本框数据的正确方法

时间:2018-05-21 00:06:19

标签: php ajax post

现在我正在使用它,并且它完美地工作,但由于某种原因,我不认为这是完成此任务的最佳或最有效的方法。当我开始添加更多的教科书输入时,它似乎会变得混乱。请查看:

的index.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">

userdata.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);

1 个答案:

答案 0 :(得分:0)

编辑:好的,这样的事情怎么样?

//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++;
}