标准免责声明,我对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中对其进行了测试,并表示它是有效的。
谁能告诉我这里发生了什么?
答案 0 :(得分:0)
...
好吧,我想出了我正在做的蠢事。我没有在其他浏览器上登录,这是对受保护路由进行ajax调用,但主页是调用源自的主页...