Ajax PHP-ParserError "Unexpected token

я пытаюсь сделать запрос GET с ajax и PHP, но я всегда получаю следующую ошибку:

text status=:parsererror, error thrown:=SyntaxError: Unexpected token < in JSON at position 0

мой запрос ajax выглядит следующим образом:

    $.ajax({
        url: 'private/ajax/get_personas.php',
        type:'GET',
        contentType: 'application/json; charset=utf-8',
        dataType:'JSON',
        success: function(data, textStatus, jqXHR) {
            alert(data);
        },
        error: function(data, textStatus, errorThrown) {
            console.log('message=:' + data + ', text status=:' + textStatus + ', error thrown:=' +  errorThrown); 
        }
    });

файл get_personas.php он содержит только следующие строки кода:

include('private/connection.php');  
echo json_encode("hello");

И файл connection.php

$host = "localhost";
$user = "root";
$pass = "12345";
$db = "pruebas";
$port = 3306;

$connection = mysqli_connect($host, $user, $pass, $db, $port);

странная вещь заключается в том, что если я включу (скопирую весь код) строки кода из файла connection.php в архиве get_personas.php все работает правильно. Я пытался решить проблему, но не достиг, надеюсь, кто-то может мне помочь. Я не хочу добавлять весь код соединения в каждый запрос ajax, который я делаю.

Author: Mariano, 2016-09-29

1 answers

Эта ошибка запускается jQuery, и это происходит потому, что вы получаете HTML вместо JSON. Вот почему упоминается < в описании ошибки.

Unexpected token in JSON at position 0



Во-первых, я рекомендую вам 2 основных пункта для обзора:

  1. Есть ли пробелы перед запуском какого-либо скрипта или любой строки, которая может печатать текст, который не является JSON?
    Ru важно, чтобы перед открытием метки <?php не было даже пустой строки, и чтобы единственная напечатанная строка была

    echo json_encode($texto);
    
  2. ¿случайно вы используете тег <? вместо <?php для запуска кода,и они отключены в ini? (хотя их даже не рекомендуется использовать).


Если это не очевидно, одним из возможных способов его отладки является оценка HTML, отправленного сервером. Для этого вы можете удалить конфигурацию, которая требует ответа, такого как JSON:

$.ajax({
    url: 'private/ajax/get_personas.php',
    type: 'GET',
    success: function(data, textStatus, jqXHR) {
        console.log(textStatus, jqXHR, data);
    },
    error: function(data, textStatus, errorThrown) {
        console.log('message=:' + data + ', text status=:' + textStatus + ', error thrown:=' + errorThrown);
    }
});

После получения можно было бы легче отличить, почему ответ является HTML.

 3
Author: Mariano, 2016-09-29 04:47:38