小编Yas*_*ila的帖子

CORS无法在Chrome/Firefox和Apache上运行

我正在尝试使用CORS在我的浏览器和Apache服务器(驻留在不同的域中)之间运行AJAX请求.

在服务器端,我在服务器的httpd.conf部分中进行了以下更改,根据" Header set Access-Control-Allow-Origin in .htaccess中的响应不起作用 ":

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
Run Code Online (Sandbox Code Playgroud)

我的AJAX调用形式如下:

        $.ajax({
            url        :'https://x.x.x.x/validateCustomerID',
            type       : 'POST',
            cache    : false,
            crossDomain: true,
            contentType: 'application/json',
            beforeSend: function(xhr){
                    xhr.setRequestHeader("Access-Control-Allow-Methods","POST");
                    xhr.setRequestHeader("Access-Control-Allow-Headers","X-Requested-With");
                    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            },
            data       : {loginId : '12345'},
            success    : function(response){console.log("Success"+JSON.stringify(response))},
            error      : function(response){console.log("Error"+JSON.stringify(response))}
        });
    }
Run Code Online (Sandbox Code Playgroud)

我也试过注释掉beforeSend()以避免预检请求,但它也没有成功.

我在Chrome和Firefox上收到的错误消息是:

  • 在Chrome中:

"XMLHttpRequest无法加载https:// xxxx/validateCustomerID.请求的资源上不存在'Access-Control-Allow-Origin'标头.因此不允许原点'null'访问.响应的HTTP状态代码为403."

  • 在Firefox中:

"阻止跨源请求:同源策略禁止在https:// xxxx/validateCustomerID读取远程资源.(原因:CORS请求失败)."

我的浏览器中没有从服务器收到响应标头,我认为这是CORS必须工作的,并且服务器中的日志显示没有请求从我的浏览器到达它.

我真的很感激,如果有人在这里可以帮助我解决这个问题,因为我已经在这里呆了几天,并且已经使用了几乎所有的命中和试用方法来使这个工作成功.

javascript apache ajax google-chrome cors

5
推荐指数
1
解决办法
3304
查看次数

使用 angular-chart.js 在条形图中手动设置 y 轴比例

我正在使用 angular-chart.js(0.9.0) 创建条形图。一起使用的 Chart.js 版本是 1.0.2。

不幸的是,在我的图表中,值的范围非常广泛。最高值在 90,000 秒,最低值在 4 秒或 40 秒。由于这样的范围,图表并没有像我希望的那样出现。例如,在下图中,最高值为 42000,最低值为 70。

在此处输入图片说明

我想知道我们是否可以在 Math.pow 值中手动设置 Y 轴的比例,即将 y 轴比例设置为 10、100、1000、10000、100000 等等。通过这种方式,我想我将能够在图表中正确覆盖如此高的范围数据。

我尝试使用图表选项并手动设置比例,如下所示。但是,使用它,比例变为 0、100、200、300 等。

            $scope.majorOptions = {
                responsive: false,
                maintainAspectRatio: true,
                scaleOverride: true,
                scaleSteps: 10,
                scaleStepWidth: Math.pow(10,2),
                scaleStartValue: 0
            };  
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以将 y 轴比例设置为 10 的幂?

或者您是否建议我采用其他任何方法来在图表中捕获这些高范围值。

谢谢。

javascript charts angularjs chart.js angular-chart

5
推荐指数
1
解决办法
3635
查看次数

$onDestroy 和 $scope.$destroy() 之间的 Angular 1.5 组件差异

我试图了解控制器的$onDestroy方法和$scope.$destroy()之间的区别。

定义表示,当需要销毁组件的包含范围时调用 $onDestroy。但是$scope.$destroy() 不是一样的情况吗?

根据我在https://plnkr.co/edit/9RlS8OLxAoyK80WPMJaN?p=preview创建的 plunker ,

<div ng-controller="ParentController">
    <button ng-click="func()">Parent</button>
    <br><br>
    <div ng-controller="ChildController">
      <button ng-click="childFunc()"> Child </button>
      <br><br>
      <comp> </comp>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我注意到两种情况。

  1. 当我从父控制器或子控制器调用 $destroy() 时,组件中会触发 $onDestroy 和 $scope.$on('$destroy') 事件。这是有道理的,因为当父作用域被销毁时,组件的包含作用域也会被销毁。但是,我仍然可以单击“Component FUNC”按钮并调用与其关联的函数。为什么会发生这种情况?

  2. 当我从组件本身调用 $destroy() 时,只有 $scope.$on('destroy') 事件被触发,而 $onDestroy 未触发。此外,我无法像在案例 1 中那样访问“组件功能”按钮。

有人可以解释一下这两种情况的区别吗?

这不是现实生活中的用例,而是我想了解的东西。

谢谢你。

javascript scope angularjs angular-components

2
推荐指数
1
解决办法
3076
查看次数