JSON中的语法错误(即使它在FF中工作 - 我认为)

时间:2017-04-21 19:09:47

标签: jquery json ajax

标准免责声明,我对JS /前端的东西不是很好,所以我可能会做一些愚蠢的事情。我很长一段时间没有和AJAX合作过。 好的,所以我正在为我正在研究的内部网站充实一些初始的ajax。我一直在FF测试,看起来没问题,但是当我在任何其他(真实)浏览器中尝试它时,它会因语法错误而失败。这是在Slim Framework中完成的,并使用TWIG进行视图。

$("#id").on('change', function(){   
    var v = $('#id option:selected').val();

    $.ajax({
        url: "{{ path_for('inventory.ajax') }}", 
        data: {
            id: v
        },
        type: "POST",
        dataType : "json",
    })

    .done(function( result ) {
        $.each(result,function(key, val){ 
            var newA = JSON.stringify(val.property.property);

            $(".ajax").append(JSON.parse(newA) + ", ");
        });
    })


    .fail(function( xhr, status, errorThrown ) {
       alert( errorThrown );
       console.log( "Error: " + errorThrown );
       console.log( "Status: " + status );
       console.dir( xhr );
    })
});

我的PHP代码很简单:

public function ajax_getProps($request, $response) {
    $id = $request->getParam('id');

    $propertiesList = $this->c->helpers->getPropertyList($id);

    echo json_encode($propertiesList);
}

就像我说的那样,在FF中它起作用,虽然我有一个不同的问题,为什么我必须字符串化,然后解析一些东西只是为了输出它。 当我在Chrome或Edge中运行它时 - IE当然没用,我也不在乎,我收到以下消息: 语法错误:意外令牌<在位置0的JSON中。 我读过这通常意味着当它期待纯JSON时你会返回HTML,但我不是。我呢? 该错误似乎指向以下行:

console.log( "Error: " + errorThrown );

如果我注释掉它和它下面的那个,我仍然会在警报中收到错误消息,但它不会显示在控制台中。

我从开发工具中检索了JSON,并在JSONLint中对其进行了测试,并表示它是有效的。

谁能告诉我这里发生了什么?

1 个答案:

答案 0 :(得分:0)

...

好吧,我想出了我正在做的蠢事。我没有在其他浏览器上登录,这是对受保护路由进行ajax调用,但主页是调用源自的主页...