【问题标题】:angularjs http get request faild loading urlangularjs http获取请求加载url失败
【发布时间】:2017-05-31 15:06:58
【问题描述】:

我有简单的角度代码来从 url 读取 json api: http://sepehr360.com/Flight/FlightSearchGrouped?str={%22Browser%22:%22TestAndroid%22,%22CookieGuid%22:%22%22,%22CredentialPassword%22:%22%22,%22CredentialUserName%22:%22%22,%22CurencyType%22:% 22IRR%22,%22CurrentUICulture%22:%22fa-ir%22,%22From%22:%22SYZ%22,%22IntervalDay%22:0,%22IsCancelAvail%22:false,%22IsDirectContract%22:false,%22IsFlightContinuous% 22:false,%22IsLogin%22:true,%22IsOnlineSupport%22:false,%22IsTour%22:false,%22Language%22:%22fa%22,%22PageSize%22:10,%22Passenger%22:%22% 22,%22PassengerItem%22:%22%22,%22RecordId%22:1,%22SortOrder%22:1,%22StartDate%22:%221396/3/15%22,%22To%22:%22IKA,THR% 22,%22UserHostAddress%22:%22%22,%22UserInfoId%22:%22%22,%22UserName%22:%22Mobile360%22,%22getTwoWay%22:false}

当我通过浏览器获取此 url 并提供 json 数据时 我使用这个角度代码来读取那个 url

/**
 * Created by ZeroL on 27/05/2017.
 */
var myApp = angular.module('myApp',[]);
myApp.controller('myController' ,function($scope,$http){

 }}
    var $seplink = "sepehr360.com/Flight/FlightSearchGrouped?str={"Browser":"TestAndroid","CookieGuid":"","CredentialPassword":"","CredentialUserName":"","CurencyType":"IRR","CurrentUICulture":"fa-ir","From":"SYZ","IntervalDay":0,"IsCancelAvail":false,"IsDirectContract":false,"IsFlightContinuous":false,"IsLogin":true,"IsOnlineSupport":false,"IsTour":false,"Language":"fa","PageSize":10,"Passenger":"","PassengerItem":"","RecordId":1,"SortOrder":1,"StartDate":"1396/3/15","To":"IKA,THR","UserHostAddress":"","UserInfoId":"","UserName":"Mobile360","getTwoWay":false}";
    var $seplink1 = "data.json";

    $http.get($seplink)
        .success(function(response){
        $scope.myData = response;
    }

    );
    
});
<html>
<head>
    <script src="angular.min.js"></script>
    <script src="js.js"></script>

</head>
<body ng-app="myApp" ng-controller="myController">
Search : <input title="search" type="text" value="" ng-model="search"/>

<table border=1>
<tr ng-repeat="data in myData.FlightList">

    <td><img src="http://sepehr360.ir/{{data.AirLineImage}}" alt="ar"></td>
    <td>{{data.AirLineTitle}}</td>
    <td>{{data.FormatedPrice}}</td>

<td>  <a href="http://sepehr360.com{{data.FlightItems[0].FlightInfo.AgencyAddress}}">get this thicket</a>
</td>
</tr>

</table>
</body>
</html>

我看到没有访问信息的结果 但我尝试将 url 数据保存到本地的 data.js 并且代码运行良好 请帮我用http从这个url读取json数据 谢谢

【问题讨论】:

    标签: javascript angularjs json http-headers


    【解决方案1】:

    您是否尝试过在 JSON 对象上使用 JSON.stringify,然后将其连接到 URL?

    像这样:

    var $seplink = "simpleUrl";
    
    var $jsonObject = JSON.stringify(jsonObject);
    
    var URL = $sepLink + $jsonObject;
    
    $http.get($seplink)
        .success(function(response){
            $scope.myData = response;
        }
    

    另外,您能否添加有关您遇到的错误的信息?

    【讨论】:

    【解决方案2】:

    您需要存储包含服务器返回的实际数据的响应数据。

    $scope.myData = response.data

    【讨论】:

    • 谢谢,但不起作用并且错误:请求的资源上存在标头。因此不允许使用原点“localhost:63342
    • @EhsanSattari 好像您正在发出跨域请求。服务器不允许来自 URL localhost:63342 的请求。确保目标服务器 (sepehr360.com) 支持 CORS。
    • 是的,因为我通过浏览器获得了这个 json,它的工作很完美,但是当我更改 URL 时出现错误,我不知道什么是 CORS
    • 如果您不拥有服务器,那么您无能为力。您可以在此处阅读有关 CORS 的更多信息 - developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
    【解决方案3】:

    你有一个无效的字符串文字

    "sepehr360.com/Flight/FlightSearchGrouped?str={"Browser":"TestAndroid","CookieGuid":"","CredentialPassword":"","CredentialUserName":"","CurencyType":"IRR","CurrentUICulture":"fa-ir","From":"SYZ","IntervalDay":0,"IsCancelAvail":false,"IsDirectContract":false,"IsFlightContinuous":false,"IsLogin":true,"IsOnlineSupport":false,"IsTour":false,"Language":"fa","PageSize":10,"Passenger":"","PassengerItem":"","RecordId":1,"SortOrder":1,"StartDate":"1396/3/15","To":"IKA,THR","UserHostAddress":"","UserInfoId":"","UserName":"Mobile360","getTwoWay":false}"
    

    需要用单引号(')来封装字面量:

    'sepehr360.com/Flight/FlightSearchGrouped?str={"Browser":"TestAndroid","CookieGuid":"","CredentialPassword":"","CredentialUserName":"","CurencyType":"IRR","CurrentUICulture":"fa-ir","From":"SYZ","IntervalDay":0,"IsCancelAvail":false,"IsDirectContract":false,"IsFlightContinuous":false,"IsLogin":true,"IsOnlineSupport":false,"IsTour":false,"Language":"fa","PageSize":10,"Passenger":"","PassengerItem":"","RecordId":1,"SortOrder":1,"StartDate":"1396/3/15","To":"IKA,THR","UserHostAddress":"","UserInfoId":"","UserName":"Mobile360","getTwoWay":false}'
    

    或者转义字符串中出现的双引号("

    "sepehr360.com/Flight/FlightSearchGrouped?str={\"Browser\":\"TestAndroid\"......"
    

    另外,您发布的 JavaScript 代码无效。在控制器声明之后有两个不合适的右大括号 (}}) 字符。

    【讨论】:

    • 谢谢,但 :( 请求的资源上存在标头。因此,不允许访问 Origin 'localhost:63342'。
    猜你喜欢
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多