为啥这个 Angular 脚本无法检索 Laravel 4 生成的 JSON?

Posted

技术标签:

【中文标题】为啥这个 Angular 脚本无法检索 Laravel 4 生成的 JSON?【英文标题】:Why this Angular script is unable to retrieve JSON generated by Laravel 4?为什么这个 Angular 脚本无法检索 Laravel 4 生成的 JSON? 【发布时间】:2013-11-22 00:25:33 【问题描述】:

AngularJS

$http(
        method: 'GET',
        url: '//www.ign-design.net/users'
    ).success(function (data, status, headers, config) 
        $scope.user.username = data.name;
    ).error(function (data, status, headers, config) 
        console.log(data);
    
);

Laravel

Route::get('users', function() 

    return Response::json(array('name' => 'Anil', 'yas' => 25));
);

问题是,当我将//echo.jsontest.com/name/Anil/yas/25 添加为$http URL 时,脚本运行良好。但是,然后我添加 //www.ign-design.net/users(由 Laravel 使用上面的代码生成),它不起作用。它转到.errorconsole.log 输出:""

我不知道怎么了。为什么我的 Laravel 的 Response::json() 不能像 jsontest.com 网站那样满足 AngularJS?花了大约 2 个小时试图弄清楚 - 没有运气。

附言。可能是标题问题 - 但我也尝试使用纯 php 输出 JSON 数据并自己设置标题。也没用。

【问题讨论】:

在浏览器控制台的网络选项卡中检查请求本身并查看它的状态,如果 url 是您所期望的,是否返回数据等 您也使用绝对路径但没有http:// 尝试添加 @charlietfl 我做到了。添加 http:// 并不能解决问题,在过去的 2 个小时里,我一直在尝试查看他们的响应标头和我的响应标头之间的差异。不走运,这就是我在 SO 上问它的原因。 那么控制台会告诉你关于请求的什么信息?状态和响应数据 @charlietfl 两者相似。正确的标题,正确的内容类型,但我的响应不被视为我看到的 JSON 响应。您可以打开您的开发工具并向我在上面发布的两个地址发出请求,然后自己查看整个内容。 :) 【参考方案1】:

您似乎遇到了跨域问题。要么将你的 Angular 代码移动到同一个域,要么让你的 Laravel 代码了解如何响应跨域调用。

有关详细信息,请参阅:https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS。

【讨论】:

以上是关于为啥这个 Angular 脚本无法检索 Laravel 4 生成的 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在尝试使用 Angular 检索数据库信息时出现错误 415?

为啥我无法检索我刚刚保留的实体?

无法弄清楚为啥页面在底部加载? Angular UI-Router 自动滚动问题

我不确定为啥我无法运行这个 sql 脚本 [重复]

在 Angular 7 中未从 Firebase 检索数据

为啥这个 PHP 脚本(由 AJAX 调用)随机无法正确加载 SESSION?