Я использую JavaScript / AJAX, поэтому, когда пользователь выбирает 'deal_name' из выпадающего меню, другая информация будет отображаться с помощью функции showPartnerInfo.Вот соответствующий фрагмент из файла k1.php:
function showPartnerInfo(str){
if (str == "") {
document.getElementById("pshipInfo").innerHTML = "";
return;
} else {
var dealName = str;
$.ajax({
type: "GET",
url: 'get_partnerInfo.php?q=',
//dataType: 'JSON',
data: {"q" : dealName},
success: function(json){
//alert(data);
var data = JSON.parse(json);
document.getElementById("pshipInfo").innerHTML = data.tax;
//document.getElementById("pshipInfo").innerHTML = json[1];
},
error: function(){
alert("error");
}
});
}
}
</script>
</head>
<body>
<?php
include ("session.php");
include ("navbar.php");
$taxID = "";
?>
<form style="margin-top: 60px" action="k1_2DB.php" method="post">
<div class="well">
<h1>K1 - Tax Update</h1>
<?php
$query = "SELECT DISTINCT deal_name FROM tbl_deal";
$result = mysqli_query($DBconnect, $query);
if(mysqli_num_rows($result) > 0){
echo "<select name='deal_name' onchange='showPartnerInfo(this.value);'>
<option value=''>Select Investment</option>";
while($row = mysqli_fetch_array($result)) {
echo "<option value='$row[0]'>$row[0]</option>";
}
}else{
echo "<select name=''><option value=''>No Investments Found</option>";
}
echo "</select>";
?>
Вот файл get_partnerInfo.php:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
include("config.php");
$q = $_GET['q'];
if (!$DBconnect) {
die('Could not connect: ' . mysqli_error($DBconnect));
}
$pship_query = "SELECT tbl_deal.deal_name, tbl_partnership.pship_name,
tbl_partnership.pship_taxID,
tbl_partner.partner_name,
tbl_deal.deal_tax_id
FROM tbl_deal
INNER JOIN tbl_partnership
ON tbl_deal.pship_ID = tbl_partnership.pship_ID
INNER JOIN tbl_partner
ON tbl_deal.partner_manag_ID = tbl_partner.partner_ID
WHERE tbl_deal.deal_name = '".$q."'";
$result = mysqli_query($DBconnect,$pship_query);
$row = mysqli_fetch_array($result);
$myArray = array(
"tax" => $row["pship_taxID"],
"name" => $row["pship_name"],
"dealTax" => $row["deal_tax_id"],
"parName" => $row["partner_name"]);
$json = json_encode($myArray);
echo $json;
mysqli_close($DBconnect);
?>
</body>
</html>
Когда я запускаю приведенный выше код, ничего не происходит, и я получаюследующая ошибка в консоли:
VM245: 1 Uncaught SyntaxError: неожиданный токен <в JSON в позиции 0 в JSON.parse () в Object.success (k1.php: 60) в u (jquery.min.js: 2) в Object.fireWith [as resolWith] (jquery.min.js: 2) в k (jquery.min.js: 2) в XMLHttpRequest.(jquery.min.js: 2) </p>
Я видел другие ответы о том, как справиться с этим (и переполнение стека, и другие), и, похоже, ничего не помогло.Важно отметить, что на вкладке сети в инструментах разработчика вывод get_PartnerInfo.php:
{"tax":"45666XA","name":"Daniels and Partners","dealTax":"SEA485","parName":"Harry Petre"}
, и если я не использую JSON.parse в функции showPartnerInfo, отображается вышебез проблем.Кажется, есть проблема с преобразованием объекта json в javascript.Любой совет?