Я использую AJAX и пытаюсь вернуть переменные, которые я получил после запроса базы данных в файле modcomp.php, тогда я пытаюсь ввести эти значения обратно на мой основной сайт, чтобы помещать их в поля ввода. Ниже я попытался, но он не работает. Это потому, что я получаю переменные в PHP, а затем возвращаю их для использования в JS / jQuery? Выполнение нескольких поисков выглядит так: JSON может быть ответом, но, глядя на JSON, я не видел пример того, как я мог запускать код для запроса базы данных, а затем поместить эту информацию в формат JSON, чтобы отступить? Моя цель – в конечном итоге отбросить все 10 переменных.
$.ajax({ method: "POST", url: "modcomp.php", data: {item: $(this).val()} success: function(data) { $('#itemnumber').val($itemnumber); $('#cost').val($cost); } });
Файл modcomp.php
<?php if(array_key_exists("item", $_POST)) { include("connection.php"); $query="SELECT * FROM components WHERE itemname = '".mysqli_real_escape_string($link,$_POST['item'])."' LIMIT 1"; if ($result=mysqli_query($link,$query)) { $row=mysqli_fetch_array($result); $id=$row[0]; $itemnumber=$row[1]; $itemname=$row[2]; $cost=$row[3]; $company=$row[4]; $contact=$row[5]; $address1=$row[6]; $address2=$row[7]; $phone=$row[8]; $part=$row[9]; //print_r ($id." ".$itemnumber." ".$itemname." ".$cost." ".$company." ".$contact." ".$address1." ".$address2." ".$phone." ".$part); } else { print_r("Issue with query"); } }
в<?php if(array_key_exists("item", $_POST)) { include("connection.php"); $query="SELECT * FROM components WHERE itemname = '".mysqli_real_escape_string($link,$_POST['item'])."' LIMIT 1"; if ($result=mysqli_query($link,$query)) { $row=mysqli_fetch_array($result); $id=$row[0]; $itemnumber=$row[1]; $itemname=$row[2]; $cost=$row[3]; $company=$row[4]; $contact=$row[5]; $address1=$row[6]; $address2=$row[7]; $phone=$row[8]; $part=$row[9]; //print_r ($id." ".$itemnumber." ".$itemname." ".$cost." ".$company." ".$contact." ".$address1." ".$address2." ".$phone." ".$part); } else { print_r("Issue with query"); } }
?>
Самый простой способ сделать это – просто установить, что ваш jquery.ajax ожидает json в качестве возврата:
$.ajax({ method: "POST", dataType: "JSON", /** others attributes **/
После этого конвертируйте свое возвращение в json и распечатайте его (только это, не более того) в php-скрипте:
//a better approach is return the column name (fetch_assoc) echo json_encode($row);
Теперь ваше возвращение может быть использовано как json:
success: function(data) { data.column_name }
json_encode – ответ
<?php if(array_key_exists("item", $_POST)) { include("connection.php"); $query="SELECT * FROM components WHERE itemname = '".mysqli_real_escape_string($link,$_POST['item'])."' LIMIT 1"; if ($result=mysqli_query($link,$query)) { $row=mysqli_fetch_array($result); $array = (); $array['id']=$row[0]; $array['itemnumber']=$row[1]; $array['itemname']=$row[2]; . . $array['part']=$row[9]; $array['status'] = true; echo json_encode($array); } else { echo json_encode(array(status => false , msg => "Issue with query"); } }
в<?php if(array_key_exists("item", $_POST)) { include("connection.php"); $query="SELECT * FROM components WHERE itemname = '".mysqli_real_escape_string($link,$_POST['item'])."' LIMIT 1"; if ($result=mysqli_query($link,$query)) { $row=mysqli_fetch_array($result); $array = (); $array['id']=$row[0]; $array['itemnumber']=$row[1]; $array['itemname']=$row[2]; . . $array['part']=$row[9]; $array['status'] = true; echo json_encode($array); } else { echo json_encode(array(status => false , msg => "Issue with query"); } }
Затем в вашем js-коде используйте json as
$.ajax({ method: "POST", url: "modcomp.php", data: {item: $(this).val()} success: function(data) { data = JSON.parse(data); // to parse json string to object if(data.status){ $('#itemnumber').val(data.itemnumber); $('#cost').val(data.cost); } } });
вы должны вернуть свое значение из своего php-файла, как
<?php if(array_key_exists("item", $_POST)) { include("connection.php"); $query="SELECT * FROM components WHERE itemname = '".mysqli_real_escape_string($link,$_POST['item'])."' LIMIT 1"; if ($result=mysqli_query($link,$query)) { $row=mysqli_fetch_array($result); return json_encode($row,true); } else { return json_encode("Some error occured"); } }
в<?php if(array_key_exists("item", $_POST)) { include("connection.php"); $query="SELECT * FROM components WHERE itemname = '".mysqli_real_escape_string($link,$_POST['item'])."' LIMIT 1"; if ($result=mysqli_query($link,$query)) { $row=mysqli_fetch_array($result); return json_encode($row,true); } else { return json_encode("Some error occured"); } }
не используйте функцию print_r () для возврата данных из вашего php-файла
И установите тип данных в ajax как JSON для анализа данных json, которые будут возвращены как
$.ajax({ method: "POST", url: "modcomp.php", datatype:'json', data: {item: $(this).val()} success: function(data) { $('#itemnumber').val(data.itemnumber); $('#cost').val(data.cost); } });
Теперь вы можете использовать свои json-данные, используя оператор dot (.), Например
$('#cost').val(data.cost);