в моем коде есть что-то странное. честно говоря, я получил это от кого-то, и я пытаюсь адаптировать его для своих нужд. Итак, проблема в том, что когда я нажимаю кнопку выборки, данные не отображаются. может ли кто-нибудь здесь сказать мне, что не так с кодом? Любой связанный ответ будет оценен. Заранее спасибо.
и вот мой код
<script type = "text/javascript">
$(document).ready(function() {
function myrequest(e) {
var name = $('.username').val();
$.ajax({
method: "GET",
url: "http://localhost/spdb/debug/autofill.php", /* online, change this to your real url */
data: {
username: name
},
success: function( responseObject ) {
alert('success');
$('#posts').val(responseObject.level);
$('#joindate').val(responseObject.last_login);
},
failure: function() {
alert('fail');
}
});
}
$('#fetchFields').click(function(e) {
e.preventDefault();
myrequest();
});
});
</script><html xml:lang = "en" xmlns = "http://www.w3.org/1999/xhtml">
<head>
<link href = "http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css" type = "text/css" rel = "stylesheet">
<script src = "http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type = "text/javascript"></script>
<script src = "http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js" type = "text/javascript"></script>
</head>
<body>
<form method = "POST" action = "?act=proc">
<fieldset>
<legend>Form</legend>
<label for = "username">Username: </label>
<input type = "text" name = "username" id = "username">
<button id = "fetchFields">fetch</button>
<label for = "posts">Posts: </label>
<input type = "text" size = "20" name = "posts" id = "posts">
<label for = "joindate">Joindate: </label>
<input type = "text" size = "20" name = "joindate" id = "joindate">
<p><input type = "submit" value = "Submit" name = "submitBtn"></p>
</fieldset>
</form>
</body>
</html>и это код PHP:
$return = mysqli_query($konek, "SELECT * FROM tb_auth WHERE username ='admin' LIMIT 1");
$rows = mysqli_fetch_array($return);
$formattedData = json_encode($rows);
print $formattedData;`
вот результат PHP-кода:
{
"0":"1",
"id_auth":"1",
"1":"TRC-US001",
"auth_code":"TRC-US001",
"2":"admin",
"username":"admin",
"3":"5f4dcc3b5aa765d61d8327deb882cf99",
"password":"5f4dcc3b5aa765d61d8327deb882cf99",
"4":"1",
"level":"1",
"5":"2018-07-05 13:55:19.200878",
"last_login":"2018-07-05 13:55:19.200878",
"6":"1",
"status":"1"
}
это картина: результат
да, это правильный URL



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


В вашем html-коде есть вход с идентификатором username. В Javascript найдите эту строку кода var name = $('.username').val();. Измените . на #. Это должен быть var name = $('#username').val();.
.username предназначен для любого тега, имеющего класс username.
#username будет искать тег с идентификатором username.
все еще не работает, братан. По-прежнему не отображаются данные в <input id = "post"> и <input id = "joindate">. Мне кажется, что проблема в responseObject, но я не знаю, что не так с этой функцией.
да, предупреждение появляется. но не вернуть значение. если вы измените это $ ('# posts'). val (responseObject.level); в $ ('# сообщений'). val ('мое значение'); , вы узнаете разные
попробуйте открыть URL-адрес в вашем ajax в веб-браузере. Вы можете увидеть результат.
его работа, я не знаю. но это возвращает данные json. в чем проблема? это проблема?
Укажите этот результат на свой вопрос. Может, я смогу с этим помочь.
Хм, странно. Я подумал, что код в порядке, увидев результат. Попробуйте изменить уровень и last_login на число. Нравится responseObject[4]
может быть, вы можете попробовать у себя дома, используя свои собственные данные для достижения наилучшего результата.
это решено братан. Спасибо за ваши усилия. я оценил это.
попробуйте разобрать responseObject на json, используя
responseObject = JSON.parse (responseObject);
в вашей функции успеха
какую часть я должен изменить, братан?
@haldinfoods в вашей функции успеха перед использованием responseObject
Привет, братан, после того, как я следую твоему ответу, результат будет отображаться как просто сообщение в моем вопросе. пожалуйста, взгляните
это решено братан. Спасибо за ваши усилия. я оценил это.
ваша проблема в том, что вы получаете данные в виде строкового / текстового формата и пытаетесь использовать их как объект сценария java, прежде чем использовать ответ в качестве объекта, вы должны проанализировать его на объект json, вот и все, вы можете указать, какая ошибка отображается в консоли браузера ?
Надеюсь, это поможет тебе
сначала нам нужно внести некоторые изменения в html и php код:
<!-- doctype is mandatory -->
<!DOCTYPE html>
<!-- language en -->
<html lang = "en">
<head>
<!-- title also is mandatory -->
<title>tilte of your project</title>
<link href = "http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css" type = "text/css" rel = "stylesheet" />
</head>
<body>
<form method = "POST" action = "?act=proc">
<fieldset>
<legend>Form</legend>
<label for = "username">Username: </label>
<input type = "text" name = "username" id = "username">
<button id = "fetchFields">fetch</button>
<label for = "posts">Posts: </label>
<input type = "text" size = "20" name = "posts" id = "posts">
<label for = "joindate">Joindate: </label>
<input type = "text" size = "20" name = "joindate" id = "joindate">
<p><input type = "submit" value = "Submit" name = "submitBtn"></p>
</fieldset>
</form>
<!-- put all your javascript before the end of the body -->
<script src = "http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src = "http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
function myrequest(e) {
// use $('#username') to select by id instead of $('.username') used to select by class
var name = $('#username').val();
$.ajax({
method: "GET",
url: "http://localhost/spdb/debug/autofill.php", /* online, change this to your real url */
data: {
username: name
},
dataType: 'json', /* this is not mandatory */
success: function( responseObject ) {
console.info('success');
$('#posts').val(responseObject.level);
$('#joindate').val(responseObject.last_login);
},
failure: function() {
alert('fail');
}
});
}
$('#fetchFields').click(function(e) {
e.preventDefault();
myrequest();
});
});
</script>
</body>
</html>
php код:
// this line is very important, by using this line
// the browser can recognize that the data sent from
// the server as a json object.
header("Content-type: application/json");
$formattedData = [];
if (isset($_GET['username'])) {
$username = trim($_GET['username']);
// to be sure that the username is not empty
if (empty($username)) {
print json_encode($formattedData);
exit;
}
$konek = mysqli_connect($sql_db_host, $sql_db_user, $sql_db_pass, $sql_db_name, 3306);
$return = mysqli_query($konek, "SELECT * FROM tb_auth WHERE username = '" . $username . "' LIMIT 1");
// use mysqli_fetch_assoc instead of mysqli_fetch_array
// $rows = mysqli_fetch_array($return);
$rows = mysqli_fetch_assoc($return);
$formattedData = json_encode($rows);
// very important every connection created need to be closed
mysqli_close($konek);
}
print $formattedData;
Боже мой, это 100% работа, чувак. ИИСУС. Большое спасибо @doset большое вам спасибо.
Правильный ли URL-адрес в ajax? Я просто спрашиваю из-за комментария, стоящего за этим.