Правильный способ передачи данных текстового поля с постом в AJAX - PullRequest
0 голосов
/ 21 мая 2018

Сейчас я использую это, и оно отлично работает, но по какой-то причине я не думаю, что это лучший или самый эффективный способ выполнить эту задачу.Кажется, что это станет грязным, когда я начну добавлять больше учебников.Пожалуйста, просмотрите:

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 голосов
/ 21 мая 2018

РЕДАКТИРОВАТЬ: Хорошо, как насчет этого?

//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++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...