小编Kha*_* TO的帖子

如何获取iframe响应http代码onload?

我正在开发一个支持Ajax的页面,我需要在不刷新页面的情况下下载文件.为此,我在页面上添加了一个隐藏的iframe.

<iframe id="iframeDownload" style="display:none"></iframe>
Run Code Online (Sandbox Code Playgroud)

当我需要下载文件时,我使用这样的脚本:

$("#iframeDownload").attr("src","url to server");
Run Code Online (Sandbox Code Playgroud)

在服务器端,我需要实现一些逻辑,它可能返回一些不同的http状态代码来指示服务器端的问题.如果文件下载成功,那就没关系.但是如果服务器端出现问题,我需要捕获这些http代码.

$("#iframeDownload").load(function(e){
    // get http status code and act accordingly but I cannot get it
});
Run Code Online (Sandbox Code Playgroud)

谢谢你的回复.

更新: 在我看来,当我们通过iframe下载时,浏览器将处理发送请求和接收响应,并仅将响应主体传递给iframe.因此,javascript无法读取响应头.这种情况类似于加载页面.如果我错了,请纠正我.

iframe jquery http onload http-headers

7
推荐指数
1
解决办法
1万
查看次数

取消/中止angularJs中的所有待处理请求

在路由更改时,我需要中止来自先前路由的所有待处理请求,以便我不会遇到先前路由的响应问题,从而弄乱我当前路由上的数据(有时候,当前一路由的响应需要很长时间才能完成时) .

我曾考虑过使用http拦截器:

$httpProvider.interceptors.push(function($q) {
    return {
     'request': function(config) {

      },

      'response': function(response) {

      }
    };
  });
Run Code Online (Sandbox Code Playgroud)

在请求函数中,我可以config.timeout使用此处建议的promise 修改它,并将所有延迟对象存储在全局缓存中,以便我可以取消所有这些.

这种方法的问题在于它可能会覆盖 config.timeout代码中其他位置的set.

我认为另一种解决方案可能是取消所有XMLHttpRequest级别的ajax请求,但我不知道该怎么做.

有什么建议?谢谢.

javascript xmlhttprequest angularjs

7
推荐指数
1
解决办法
3792
查看次数

在javascript中模拟类似C#的事件

我想在JavaScript中模拟C#的事件:我想要做的是这样的事情:

假设我有以下代码:

function addToInvocationList(method, listener) {
      *Some code to add listener to the invocation list of method*
}

function MyClass() {
}

MyClass.prototype.Event = function() {}

var my_class_obj = new MyClass();

function subscriberFunction1() {}
function subscriberFunction2() {}
function subscriberFunction3() {}

addToInvocationList(my_class_obj.Event, subscriberFunction1);
addToInvocationList(my_class_obj.Event, subscriberFunction2);
addToInvocationList(my_class_obj.Event, subscriberFunction3);

my_class_obj.Event();
Run Code Online (Sandbox Code Playgroud)

我想要做的是当我调用my_class_obj.Event时,所有订阅的函数都被调用.

这可以纯粹用JavaScript实现,还是需要通过DOM事件找到方法?

javascript c#

6
推荐指数
1
解决办法
1417
查看次数

web api put识别查询字符串但不识别正文

当我将用户作为查询字符串传递(使用$ http中的参数)并设置web api方法以在uri中查找它们时,一切都很好.但是当我按照下面的方式传递它们时,用户显示为null.我在这里失踪了什么?

角度函数

scope.saveChanges = function () {
        // create array of user id's
        var users = [];
        angular.forEach(scope.usersInRole, function (v, k) {
            users.push(v.Key);
        });

        var data = { user: users };

        var token = angular.element("input[name='__RequestVerificationToken']").val();

        // put changes on server
        http({
            url: config.root + 'api/Roles/' + scope.selectedRole + '/Users',
            method: 'PUT',
            data: data,
            contentType: "application/json; charset=utf-8",
            headers: { "X-XSRF-Token": token },
            xsrfCookieName: '__RequestVerificationToken'
        }).success(function (result) {
            // notify user changes were saved
            angular.element('#myModal').reveal({ closeOnBackgroundClick: false });
        });
    }; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc-4 asp.net-web-api angularjs

4
推荐指数
1
解决办法
2230
查看次数

几分钟后,Web api bearer令牌超时

我正在使用asp.net web api和基于令牌的身份验证.我的令牌选项将成功令牌过期时间设置为14天后.

OAuthOptions = new OAuthAuthorizationServerOptions
{
    TokenEndpointPath = new PathString("/Token"),
    Provider = new SimpleAuthorizationServerProvider(),
    AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
    // In production mode set AllowInsecureHttp = false
    AllowInsecureHttp = true
};
Run Code Online (Sandbox Code Playgroud)

我生成的令牌是这样的.

{
  "access_token": "Mg5oQAzt9RLSUezxPYNQ7JRcJqo-uPxfOgOGHKkrJ_q56g0H8x-sjKm1mkjND0VAK3H22nwFlGNk5wfTocCb5mKMvTYwsZAv5sh0SACHdbb_9BGftMuqbFdm6wH0wXF-Sq3noF7hc2FeUUauhDfrBq5jTSou4NO3EBwjc0jj3v-yQzPGMCFxq2Q8C9uhat14rGYteYqj5mX3L5JtwHrobePL2R9lcnagNIMa44GUWQ8DVR2urP4KCrDHJf1G5pIfv94uB85I7sbf0nse7VvhYp058I8voNR9_zD1XC5-AODQJ16F484zxQokX1BWJ3gfgd86zJr2O9iKsA",
  "token_type": "bearer",
  "expires_in": 1209599,
  ".issued": "Sat, 20 Feb 2016 13:15:10 GMT",
  ".expires": "Sat, 05 Mar 2016 13:15:10 GMT"
}
Run Code Online (Sandbox Code Playgroud)

我将此信息保存在cookie中并在我的应用程序中使用.但几分钟后我的访问令牌验证即将到期,401 http错误.

我试图从Fiddler和邮差获取请求,但给出了401授权错误.

c# asp.net-mvc oauth access-token asp.net-web-api

4
推荐指数
1
解决办法
9901
查看次数

如何在没有$ rootScope的情况下切换Angularjs ng-show

正如您在Angularjs常见问题解答中所读到的那样,$rootScope不鼓励使用.因此,服务更适合存储稍后将在控制器之间共享的数据.但是我无法在ng-show不使用的情况下使指令工作$rootScope.

这就是我正在做的事情;

的index.html

<div ng-controller="GlobalCtrl">
    <div ng-show="showSettings"></div>
    <aside  ng-show="showSettings" >
        <h1>Some text</h1>
        <button ng-click="closeSettings()">Ok</button>
    </aside>
</div>
Run Code Online (Sandbox Code Playgroud)

app.js (我正在开发应用程序,因为我正在开发cordova ..代码被截断)

var app = angular.module('tibibt', ['tibibt.controllers', 'tibibt.filters', 'tibibt.services']);
angular.element(document).ready(function () {
    angular.bootstrap(document, ['tibibt']);
});
Run Code Online (Sandbox Code Playgroud)

services.js

/* Create an application module that holds all services */
var tibibtServicess = angular.module('tibibt.services', []);

/* Global service */
tibibtServicess.service('globalService', function () {
    this.Data = {
        showSettings: 'false'
    };
    this.getAll = function () {
        return this.Data;
    }; …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-scope

3
推荐指数
1
解决办法
5045
查看次数

如何在Angularjs的列表中使用键上/下指令?

我有以下代码:

app.directive('ngUp', function () {
    return function (scope, element, attrs) {
        element.bind("keyup", function (event) {
            if(event.which === 40) {
                  console.log('down')
                }
            else if (event.which === 38) {
                  console.log('up');
                }
            else {
                console.log('some other');
            }

        });
    };
});
Run Code Online (Sandbox Code Playgroud)

我有:

<div  class="scrollbar" id="ex3">
<div>
    <ul>
        <li ng-repeat="video in videos">
            <a href="#" ng-click="select($index)" style="font-size: 100%">
                {{video.name | subStringFilter : 20}}
            </a>
        </li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

如果我把ng-up放在li元素或锚元素上,我将指令中的元素作为a.ng-binding.

我不知道这是什么.

我想要的是能够使用我的向上和向下箭头键向上和向下滚动列表(并在滚动时将类应用于突出显示的列表元素).

我期待元素可以是li元素或锚元素,但是我得到了a.ng-binding,它在向上或向下按键时不会触发.

angularjs

3
推荐指数
1
解决办法
6024
查看次数

为什么我们需要多个背景颜色规则?

我是Css的新手,很难在互联网上搜索这个特定的案例,所以我在这里发一个问题.

我正在研究现有的代码库,我看到了类似的东西.

li {
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

我不明白的意思\9.但它看起来规则是重复的,我应该删除其中一个.

你能解释一下\9吗?我应该删除一条规则吗?谢谢.

我问的原因是因为我正在将一些css文件转换为更少的文件并\9导致编译问题.

css less

3
推荐指数
1
解决办法
637
查看次数

自定义错误一旦部署在 IIS 上就不能在本地工作

我有以下几点:

Web.config

<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<customErrors mode="On" defaultRedirect="~/Error/ShowError">
  <error redirect="~/Error/ShowError/400" statusCode="400" />
  <error redirect="~/Error/ShowError/401" statusCode="401" />
  <error redirect="~/Error/ShowError/403" statusCode="403" />
  <error redirect="~/Error/ShowError/404" statusCode="404" />
</customErrors>
</system.web>
Run Code Online (Sandbox Code Playgroud)

ErrorController

[AllowAnonymous]
public class ErrorController : Controller
{
    public ViewResult ShowError(int id)
    {
        Response.StatusCode = id;
        switch (id)
        {
            case 400:
                return View("~/Views/Error/400.cshtml");
            case 401:
                return View("~/Views/Error/401.cshtml");
            case 403:
                return View("~/Views/Error/403.cshtml");
            case 404:
                return View("~/Views/Error/404.cshtml");
            default:
                return View("~/Views/Error/404.cshtml");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

FilterConfig

    public static void RegisterGlobalFilters(GlobalFilterCollection …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc web-config http-status-codes

3
推荐指数
1
解决办法
842
查看次数

与其他域共享cookie

我知道只要它们是同一父域的子域,就可以允许其他域读取我们的域cookie .

例如,intranet.abc.com并且extranet.abc.com可以通过指定域属性来允许彼此读取cookie.abc.com

现在,我真的需要我可以允许其他域读取我的域cookie(它们不是同一域的子域).我在互联网上搜索了很多讨论=> 由于安全问题,所有人都说"不" .我不确定我是否错过了那里的解决方案,因为在这种情况下我没有看到任何安全问题.我的服务器明确允许XYZ.COM域读取此cookie,因为cookie不包含任何敏感信息,而XYZ.COM域是我的可信域,

在我看来,应该有一种方法来指定允许在我们的域中读取特定cookie的其他域的列表,就像CORS一样,服务器可以决定信息是否应该可用于某些可信域.

如果没有使用解决方法,请告诉我是否可行,如果是,该怎么做?如果不可能,我真的想知道原因.

有关我正在实施的内容的一些信息:

我正在实现文件下载,在客户端我需要通过使用javascript中的间隔定期检查cookie中的下载令牌来检测下载是否完成.

我目前正在处理的当前系统的逻辑可能将文件存储在2个不同的服务器中.如果当前服务器中缺少该文件,它将在另一个服务器(另一个域)中下载文件

非常感谢你.

javascript cookies web-applications

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

从AngularJS控制器,如何解析模块中定义的另一个控制器功能(动态ng-controller)?

自解释小提琴:http://jsfiddle.net/5FG2n/6/

我需要根据其名称作为字符串动态选择要在运行时使用的控制器.该字符串将从配置对象中读取.

在下面的代码我目前已InnerCtrlAsLocalVariable分配给$scope.dynamicCtrl.我怎么分配InnerCtrlFromModule给财产?

视图:

<div ng-app='app' ng-controller='OuterCtrl'>
    <div ng-controller='dynamicCtrl'>
        {{message}}
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

var InnerCtrlAsLocalVariable = ['$scope',
    function($scope) {
        $scope.message = 'from controller as local variable - do not want'
    }
];

angular.module('app', []) 

    .controller('OuterCtrl', ['$scope', 

        function($scope) {
            // Instead of doing this...
            $scope.dynamicCtrl = InnerCtrlAsLocalVariable;

            // ...I want to do something like this:
            // $scope.dynamicCtrl = resolveCtrl('InnerCtrlFromModule');                                               
        }
    ])

    .controller('InnerCtrlFromModule', ['$scope',
        function($scope) {
            $scope.message = 'from controller defined in module …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-scope angularjs-controller

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

环境事务中的TransactionScope错误不会回滚事务

我使用这样的环境事务:


using(TransactionScope tran = new TransactionScope()) {
    CallAMethod1();//INSERT
    CallAMethod2();//INSERT
    tran.Complete();
}
Run Code Online (Sandbox Code Playgroud)

该方法CallAMethod2();返回affected rows =-264 所以它无法插入但是第一个Insert已经提交了!

我想知道如何使用ambient transaction以及如果第二种方法有多个需要内部事务的操作,如果我将这些操作放在内部事务中该怎么办?像这样 :

     DAL_Helper.Begin_Transaction();

              //------Fill newKeysDictioanry

                affectedRow = DBUtilities.InsertEntityWithTrans("table2", newKeysDictioanry, DAL_Helper);

                if (affectedRow == 1)
                {
                    if (!string.IsNullOrEmpty(sp_confirm))
                    {
                        result_dt = UserTransactionDAL.Run_PostConfirm_SP(sp_PostConfirm, OBJ.ValuesKey, DAL_Helper);
                        if (result_dt.Rows.Count > 0 && result_dt.Rows[0][0].ToString() == "0")
                        {
                            DAL_Helper.current_trans.Commit();

                            if (DAL_Helper.connectionState == ConnectionState.Open)
                            {
                                DAL_Helper.Close_Connection();
                            }
                            return 1;// affectedRow;
                        }
                        else
                        {
                            DAL_Helper.current_trans.Rollback();
                            if (DAL_Helper.connectionState == ConnectionState.Open)
                            {
                                DAL_Helper.Close_Connection();
                            }
                            return -2; 
                        }
                    }
//etc
Run Code Online (Sandbox Code Playgroud)

c# asp.net informix transactions transactionscope

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