Я пытаюсь использовать ответ JSON от моего Ajax-запроса, но независимо от того, что я пытаюсь, я не могу заставить это работать, поэтому мне нужна помощь, пожалуйста.
Мой код для запроса AJAX ниже
<html>
<head>
<title>QuizMaster</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="jquery-3.1.0.min.js"></script>
<script>
function player(x){
var player = x;
$.ajax({
url:"gameDb.php",
type: "GET",
data: {"request":player},
dataType: "json",
success: function(data){
console.log(data);
var obj = JSON.parse(data);
console.log(obj[1].player1);
//console.log(data['player1']);//undefined
//console.log(data[player[0]]);
}
});
}
$(document).ready(function(){
$('#button input').click(function(){
var x = this.id;
player(x);
});
});
</script>
С этим я получаю ответ
` player1.php:18 Uncaught ReferenceError: data is not defined
at Object.success (player1.php:18)
at i (VM160 jquery-3.1.0.min.js:2)
at Object.fireWith [as resolveWith] (VM160 jquery-3.1.0.min.js:2)
at A (VM160 jquery-3.1.0.min.js:4)
at XMLHttpRequest.<anonymous> (VM160 jquery-3.1.0.min.js:4)`
Мой JSON-ответ без сценария успеха следующий
`{1: {…}}1: 0: "1"1: "1"2: "0"id: "1"player1: "1"player2: "0"__proto__: Object__proto__: Object`
Если я изменю успех с
`var obj = $.parseJSON(data); console.log(data[0].player1);`
к этому
`console.log(data['player1']);` i get undefined
и если я изменю его на
console.log(data[player[0]]);
Я тоже получаю неопределенный
Что я делаю не так? я хотел бы иметь возможность использовать ответ в моем коде
Это скрипт PHP, если он помогает
<?php
$request = $_GET['request'];
try
{
$pdo = new PDO('mysql:host=localhost; dbname=game', '***', '***');
}
catch (PDOException $e)
{
echo 'Error: ' . $e->getMessage();
exit();
}
if ($request == 'player1'){
$player1 = 1;
$player2 = 0;
}
if ($request == 'player2'){
$player1 = 0;
$player2 = 1;
}
$id = 1;
$sql = "UPDATE game1 SET player1 = :p11, player2 = :p12 WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->bindParam(':p11', $player1);
$stmt->bindParam(':p12', $player2);
$stmt->execute();
$sql = 'SELECT * FROM game1';
$stmt = $pdo->prepare($sql);
$stmt->execute();
while ($row = $stmt->fetch())
{
$x++;
$items[$x] = $row;
}
echo json_encode ($items);
$conn = null;
?>
EDITED
Если я изменю скрипт php на следующий
while ($row = $stmt->fetch())
{
//$x++;
//$items[$x] = $row;
$player1 = $row['player1'];
$player2 = $row['player2'];
}
//$item[{"plater1":"1", "player2":"2"}];
//echo "<pre>";print_r(json_encode($items));die;
$items['player1'] = $player1;
$items['player2'] = $player2;
echo json_encode ($items);
я получаю следующее при переходе на php код
{"player1":"0","player2":"0"}
если я изменю скрипт игрока на следующий
success: function(data){
console.log(data);
var obj = parseInt(data.player1);
console.log(obj);
}
Я получаю значение игрока 1, которое является правильным
но если я попробую
var obj = JSON.parse(data);
или
var obj = $.parseJSON(data);
Я все еще получаю синтаксическую ошибку для обоих. Не знаю почему, но я могу получить работу около