错误未捕获的语法错误:意外的令牌<in json =“” at =“” position =“” 0 =“”

时间:2018-12-14 00:13:25

标签: javascript jquery ajax

=“”

我有以下内容JS脚本:

jQuery(document).ready(function($) {
    $("#idSelect").change(function(event) {
        var valor = $(this).val();
        //alert(valor);
        $.post( "ajaxSerie.php", { valorInput: valor }, function( data ) {
            var retorno = JSON.parse(data);
            console.log(retorno);
            $("#pertence").val(retorno['pertence'])// aqui estou atribuindo um input qualquer o valor retornado do php, o input tera o valor de sala206
            $.each(retorno, function() {
                $('<option>').val(retorno['pertence']).text(retorno['pertence']).appendTo('#teste');
            });
        });
    });

}
AJAX中的

看起来像这样:

$idValor = $_POST['valorInput']; 
 $result = [
"pertence" => $idValor
];
echo json_encode($result);

当我在本地进行操作时,它运行完美,现在当我进入服务器上的站点时出现以下错误:

  

未捕获到的SyntaxError:JSON中位置0上的意外令牌<< / p>

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您的Ajax调用可能正在返回HTML,该HTML以开头的HTML标记“ <”开头。

以我的经验,Ajax调用返回HTML表示后端出现错误。如果使用浏览器的开发人员工具,则可以跟踪Ajax调用并读取其响应。

花时间阅读HTML,因为在大多数情况下,标记中的错误消息会留下面包屑来查找真正的问题。

答案 1 :(得分:0)

第一:$.post(url , {} , callback function(){} , 'json');可以添加'json'而不是使用JSON.parse()

2nd:如果您的服务器运行的PHP版本低于5.4

$result = [
"pertence" => $idValor
];

应该是

$result = array(
"pertence" => $idValor
);