首页 > 解决方案 > 在 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);

标签: phpajaxpost

解决方案


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

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

推荐阅读