Разбор JSON-объекта в javascript с помощью ajax / php - PullRequest
0 голосов
/ 01 декабря 2018

Я использую 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.Любой совет?

1 Ответ

0 голосов
/ 02 декабря 2018

После комментария rickdenhaan я взял html и теги body из get_partnerInfo.php и просто оставил текст внутри.Теперь это работает без проблем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...