возвращающие переменные из файла AJAX / php

Я использую 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);