Я пытаюсь заполнить таблицу HTML, используя код JQUERY, AJAX и PHP. Когда я запускаю свой код, моя таблица отображается, но она заполнена «неопределенным».
У меня есть три части кода. Вот мой HTML и jQuery:
var integer = $("#transfers_in").attr("name");
alert("integer: " + integer);
$.ajax('includes/test.php', {
type: 'POST', // http method
data: {
dataType: 'json',
myData: integer
}, // data to submit
success: function(response) {
var len = response.length;
for (var i = 0; i < len; i++) {
var name = response[i].name;
var amount = response[i].amount;
var tr_str = "<tr>" +
"<td align='center'>" + (i + 1) + "</td>" +
"<td align='center'>" + name + "</td>" +
"<td align='center'>" + amount + "</td>" +
"</tr>";
$("#money_in").append(tr_str);
}
}
});
<table id = "money_in">
<tr>
<th>Name</th>
<th>Amount(Million £)</th>
</tr>
</table>
и вот мой PHP-код:
<?php
if (isset($_POST['myData'])) {
$integer = $_POST['myData'];
if ($integer === "1"){
include 'db_connection.php';
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$return_arr = array();
$query = "SELECT * FROM `money_in_19_20`";
$result = mysqli_query($conn,$query);
while($row = mysqli_fetch_array($result)){
$name = $row['Name'];
$amount = $row['Amount'];
$return_arr[] = array("Name" => $name,
"Amount" => $Amount);
}
// Encoding array in JSON format
echo json_encode($return_arr);
}
}
Данные Json принимаются в формате
{"Имя":"Опасность","Сумма":"103000000"}
Почитайте немного о jQuery AJAX и о том, как разместить параметры в нужном месте Learn.jquery.com/ajax/jquery-ajax-methods



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы возвращаете объект как имя, количество и проверяете как имя, количество
var name = response[i].name;
var amount = response[i].amount;
должен быть
var name = response[i].Name;
var amount = response[i].Amount;
Большое спасибо за Вашу помощь. Это заполнило мою таблицу. Однако теперь, если я нажму на кнопку дважды. Теперь данные появятся в таблице дважды. Можно ли как-то решить эту проблему? Еще раз спасибо. Я очень благодарен за вашу помощь
Вместо jQuery .append() вы можете использовать .html()
Однако я попытался использовать .html(), который затем добавляет только нижнюю строку данных вместо всего этого. Спасибо за предложение.
var html = ""; for (var i = 0; i < len; i++) { var name = response[i].Name; var amount = response[i].Amount; var tr_str = "<tr>" + "<td align='center'>" + (i + 1) + "</td>" + "<td align='center'>" + name + "</td>" + "<td align='center'>" + amount + "</td>" + "</tr>"; html+=tr_str; //$("#money_in").append(tr_str); } $("#money_in").html(html);Я использовал ваш код выше. Теперь заголовки больше не отображаются. Как это исправить?
попробуй это <table> <thead> <tr> <th>Name</th> <th>Amount(Million £)</th> </tr> </thead> <tbody id = "money_in"> </tbody> </table>
Большое спасибо. Это решило мою проблему.
Привет, вы не проанализировали свой json, то есть:
JSON.parse(response);внутри функции успеха, затем используйте то же самое или установитеdataTypeпросто'json', чтобы он автоматически конвертировался.