Разбор объекта JSON в javascript с помощью ajax / php

Я использую 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: Unexpected token < in JSON at position 0 at JSON.parse () at Object.success (k1.php:60) at u (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at k (jquery.min.js:2) at XMLHttpRequest. (jquery.min.js:2)

Я видел другие ответы о том, как справиться с этим (как переполнение стека, так и другие), и, похоже, ничего не помогает. Важно отметить, что на вкладке сети в инструментах разработчика вывод get_PartnerInfo.php:

  {"tax":"45666XA","name":"Daniels and Partners","dealTax":"SEA485","parName":"Harry Petre"}

и если я не использую JSON.parse в функции showPartnerInfo, вышеуказанное отображается без проблем. Похоже, возникла проблема с преобразованием объекта json в javascript. Любой совет?

Это не может быть (полностью) выводом для get_PartnerInfo.php - вы выводите doctype, HTML-тег, заголовок и тело. Ничего из этого не должно быть для ответа JSON.

rickdenhaan 01.12.2018 19:32

Почему голосование против?

Simcha 02.12.2018 08:51

Потому что фейспалм ?‍♂️ и фактически неверная информация в вопросе…?

deceze 02.12.2018 09:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После комментария Рикденхаана я вынул теги html и body из get_partnerInfo.php и просто оставил текст внутри файла. Теперь работает без проблем!

Другие вопросы по теме